Ява противоречит самому себе? - PullRequest
6 голосов
/ 18 сентября 2011

Должен ли я объявить Math.round(1/2) в Java как int или double? Если оба в порядке, что является более правильным?

Кроме того, почему Eclipse говорит мне Math.round (1/2) = 0.0, а Math.round (0.5) = 1.0?

Любая помощь будет оценена!

Ответы [ 2 ]

14 голосов
/ 18 сентября 2011

Компилятор начинает с вычисления выражения 1/2. Оба эти числа являются целыми числами, так что это целочисленная математика. В целых числах 1, деленное на 2, равно 0. Затем он преобразует 0 в двойное число, чтобы передать его в Math.round ().

Если вы хотите получить правильный ответ, вам нужно сдать в два раза: вы можете сделать это, используя 1.0 / 2.0 вместо 1 / 2.

6 голосов
/ 18 сентября 2011

1/2 равно 0, потому что это целочисленное выражение.

Если вы хотите получить значение с плавающей запятой, скажем 1.0/2.0 (или просто 1./2).

...