(Java)为什么Math.ceil(15/10)是1.0而不是2.0?

时间:2013-03-26 17:15:03

标签: java casting double integer-division

为什么Math.ceil(15/10) 1.0而不是2.0? 当我改为Math.ceil((double)15/10)时,我按预期得到2.0。

1 个答案:

答案 0 :(得分:5)

因为将整数除以另一个整数会得到一个整数:15/101

来自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)(第一个使用双打,第二个使用浮动)。