关于Math的round()、floor()、ceil()函数对负数的计算方式

各自功能分别是:

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 

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值