为什么整数div和mod向零舍入?

时间:2011-04-15 21:39:51

标签: java integer-division

与C不同,在Java中,即使对于负操作数,x/yx%y的结果也很明确。令人惊讶的是,它通过向零舍入而不是向下舍入(即向负无穷大)来定义。有没有人利用这个定义?

在大多数情况下,我只是不在乎,但有时我不得不解决这个问题,例如,在使用modulo array.length计算索引时。

这不是咆哮,如果有这个定义的用途,我真的很感兴趣。

2 个答案:

答案 0 :(得分:6)

如果可以向零舍入,则更容易实现除法例程。通常,涉及负数的除法是符号翻转,然后除法在正数等价物上进行,然后答案再次翻转。因此,效果自然会向零舍入。

答案 1 :(得分:1)

以下是一个有用的示例,但稍微有点:

maxPage = (rows.length - 1) / ROWS_PER_PAGE

(假设为maxPage = 0 rows.length = 0时,ROWS_PER_PAGE > 1无需特殊情况。)