Почему целое число div и мод округляют до нуля? - PullRequest
5 голосов
/ 16 апреля 2011

В отличие от C, в Java результат x/y и x%y четко определен даже для отрицательных операндов. Удивительно, но это определяется округлением до нуля, а не округлением вниз (то есть в сторону отрицательной бесконечности). Кто-нибудь воспользовался этим определением?

В большинстве случаев мне просто все равно, но иногда мне приходилось обходить это, например, при вычислении индекса по модулю array.length.

Это не напыщенная речь, мне действительно интересно, есть ли применения для этого определения.

Ответы [ 2 ]

6 голосов
/ 16 апреля 2011

Легче реализовать процедуру деления, если вы можете округлить до нуля. Часто деление, включающее отрицательный знак, переворачивается на знак, а затем деление выполняется на положительном эквиваленте, а затем ответ снова переворачивается. Таким образом, эффект будет округлен до нуля.

1 голос
/ 12 января 2016

Вот один пример, где это полезно, хотя и незначительно:

maxPage = (rows.length - 1) / ROWS_PER_PAGE

(Нет необходимости в специальном случае для maxPage = 0 при rows.length = 0, предполагая ROWS_PER_PAGE > 1.)

...