- Math.ceil()是向上取整,得到的数值应不小于原来的数值。
- Math.floor()是向下取整,得到的数值应不大于原来的数值。
- Math.round()就是按照数学中的四舍五入原则得到对应的数值。
Math.ceil(2.1) //3
Math.ceil(-2.1) //-2
Math.floor(2.1) //2
Math.floor(-2.1) //-3
Math.round(3.2) //3
Math.round(-3.2) //-3
但是对于round()函数,对于-2.5这样的中间数值利用四舍五入法则计算会遇到很大麻烦。
查看Math.round()的源码可以得知:
public static long round(double a) {
return (long)floor(a + 0.5d);
}
可以看出该函数的返回值为long类型,且将结果加上0.5,紧接着对结果调用floor方法并将结果强制转化成long类型。
故:
Math.round(-2.5) //-2 Math.floor(-2.5+0.5) =>-2
Math.round(-2.51) //-3 Math.floor(-2.51+0.5)=>Math.floor(-2.01) //-3