(Java) 为啥 Math.ceil(15/10) 是 1.0 而不是 2.0?
Posted
技术标签:
【中文标题】(Java) 为啥 Math.ceil(15/10) 是 1.0 而不是 2.0?【英文标题】:(Java) why is Math.ceil(15/10) is 1.0 and not 2.0?(Java) 为什么 Math.ceil(15/10) 是 1.0 而不是 2.0? 【发布时间】:2013-03-26 17:15:02 【问题描述】:为什么是 Math.ceil(15/10)
1.0 而不是 2.0 ?
当我改为运行 Math.ceil((double)15/10)
时,我得到了预期的 2.0。
【问题讨论】:
改用Math.ceil(15f/10)
。
【参考方案1】:
因为一个整数除以另一个整数会得到一个整数:15/10
是 1
。
来自the specification:
整数除法向 0 舍入。也就是说,产生的商 二进制数值提升后的整数操作数 n 和 d (§5.6.2) 是一个整数值 q,其大小尽可能大 同时满足|d·q| ≤ |n|。此外,当 |n| 时 q 为正≥ |d| 并且 n 和 d 具有相同的符号,但是当 |n| 时 q 为负≥ |d|和 n 和 d 有相反的符号。
您应该使用Math.ceil(15.0/10)
或Math.ceil(15f/10)
(第一个使用双精度,第二个使用浮点)。
【讨论】:
谢谢。你是一个了不起的人。以上是关于(Java) 为啥 Math.ceil(15/10) 是 1.0 而不是 2.0?的主要内容,如果未能解决你的问题,请参考以下文章
java Math.ceil int向上取整 不对 正确用法
4java 中的 Math.round(-1.5) 等于多少?
java中常用到的math方法(Math.PIMath.random()Math.abs(double)Math.floor(double)Math.ceil(double)Math.rou