• Math.ceil()是向上取整,得到的数值应不小于原来的数值。
    • Math.floor()是向下取整,得到的数值应不大于原来的数值。
    • Math.round()就是按照数学中的四舍五入原则得到对应的数值。
    1. Math.ceil(2.1) //3
    2. Math.ceil(-2.1) //-2
    3. Math.floor(2.1) //2
    4. Math.floor(-2.1) //-3
    5. Math.round(3.2) //3
    6. Math.round(-3.2) //-3

    但是对于round()函数,对于-2.5这样的中间数值利用四舍五入法则计算会遇到很大麻烦。
    查看Math.round()的源码可以得知:

    1. public static long round(double a) {
    2. return (long)floor(a + 0.5d);
    3. }

    可以看出该函数的返回值为long类型,且将结果加上0.5,紧接着对结果调用floor方法并将结果强制转化成long类型。
    故:

    1. Math.round(-2.5) //-2 Math.floor(-2.5+0.5) =>-2
    2. Math.round(-2.51) //-3 Math.floor(-2.51+0.5)=>Math.floor(-2.01) //-3