Math 取整方法的区别

Math.ceil()、Math.round()、Math.floor() 三种取整方法的使用场景

问题

JavaScript 中 Math.ceil()Math.round()Math.floor() 三者有什么区别?

解答

这三个方法都用于数字取整,但取整规则不同:

Math.ceil() - 向上取整

始终向正无穷方向取整,返回大于或等于参数的最小整数。

Math.ceil(4.1);   // 5
Math.ceil(4.9);   // 5
Math.ceil(-4.1);  // -4
Math.ceil(-4.9);  // -4

Math.round() - 四舍五入

按照标准四舍五入规则取整,小数部分 >= 0.5 时向上取整,否则向下取整。

Math.round(4.4);   // 4
Math.round(4.5);   // 5
Math.round(-4.4);  // -4
Math.round(-4.5);  // -4 (注意:负数的 0.5 向上取整)

Math.floor() - 向下取整

始终向负无穷方向取整,返回小于或等于参数的最大整数。

Math.floor(4.1);   // 4
Math.floor(4.9);   // 4
Math.floor(-4.1);  // -5
Math.floor(-4.9);  // -5

关键点

  • Math.ceil() 向上取整,正数变大,负数接近 0
  • Math.floor() 向下取整,正数接近 0,负数变小
  • Math.round() 四舍五入,注意负数 -4.5 结果是 -4
  • 三个方法都不会修改原数字,返回新的整数值