【发布时间】: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)。
标签: java casting double integer-division
为什么是 Math.ceil(15/10) 1.0 而不是 2.0 ?
当我改为运行 Math.ceil((double)15/10) 时,我得到了预期的 2.0。
【问题讨论】:
Math.ceil(15f/10)。
标签: java casting double integer-division
因为一个整数除以另一个整数会得到一个整数:15/10 是 1。
整数除法向 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)(第一个使用双精度,第二个使用浮点)。
【讨论】: