float, double и int по математике в Java - PullRequest
0 голосов
/ 27 декабря 2010

У меня были некоторые сомнения / вопросы по математике в Java, поэтому я сделал небольшую программу, скриншот которой вы можете увидеть по этой ссылке:
http://www.imageshuffle.com/view.php?filename=73doublevsfloat.jpg
Как такие числа вообще возможны?

f / i должно быть 0.0155 независимо от того, как вы на это смотрите
i * f должно быть 155 независимо от того, как вы на это смотрите
i + f должно быть 101.55
i - f должно быть 98.45

и т.д.. То же самое с двойным.
Так что же дает? Почему математика в Java такая неправильная?

1 Ответ

4 голосов
/ 27 декабря 2010

Это происходит потому, что i /= f изменяет i: это эквивалентно i = i / f (плюс округление).
Таким образом, при выполнении f / i, i равно ~ 65 вместо 100.

...