与C不同,在Java中,即使对于负操作数,x/y
和x%y
的结果也很明确。令人惊讶的是,它通过向零舍入而不是向下舍入(即向负无穷大)来定义。有没有人利用这个定义?
在大多数情况下,我只是不在乎,但有时我不得不解决这个问题,例如,在使用modulo array.length
计算索引时。
这不是咆哮,如果有这个定义的用途,我真的很感兴趣。
答案 0 :(得分:6)
如果可以向零舍入,则更容易实现除法例程。通常,涉及负数的除法是符号翻转,然后除法在正数等价物上进行,然后答案再次翻转。因此,效果自然会向零舍入。
答案 1 :(得分:1)
以下是一个有用的示例,但稍微有点:
maxPage = (rows.length - 1) / ROWS_PER_PAGE
(假设为maxPage = 0
rows.length = 0
时,ROWS_PER_PAGE > 1
无需特殊情况。)