各自功能分别是:
round():四舍五入;2.3->2;2.5->3;2.6->3 -2.3->-2;-2.5->-2;-2.51->-3
floor():向下取整,得到的值不大于原来的值;2.3->2;2.5->2;2.6->2; -2.3->-3
ceil():向上取整,得到的值不小于原来的值;2.3->3;2.5->3;2.6->3; -2.3->2
另外这里说下 round() 对负数 例如 -2.5 的这样处于小数中间值 .5 的四舍五入计算:
Math.round(-2.51) = -3
但是Math.round(-2.5) = -2;并不是 -3
通过查看Math.round()源码,有部分是:
public static long round(double a) {
return (long)floor(a + 0.5d);
}
可以看出,round()计算规则是:
返回最接近参数的 long.结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为 long 类型.
所以:
floor(-2.5+0.5) = -2;
floor(-2.51+0.5) = floo(-2.01) = -3
因此Math.round(-2.5) = -2,而不是 -3

329

被折叠的 条评论
为什么被折叠?



