5

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

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

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

4

2 回答 2

6

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

于 2011-04-15T21:42:03.943 回答
1

这是一个有用的例子,但有点小:

maxPage = (rows.length - 1) / ROWS_PER_PAGE

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

于 2016-01-12T19:07:09.607 回答