У меня были некоторые сомнения / вопросы по математике в 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
f / i
0.0155
i * f
155
i + f
101.55
i - f
98.45
и т.д.. То же самое с двойным. Так что же дает? Почему математика в Java такая неправильная?
Это происходит потому, что i /= f изменяет i: это эквивалентно i = i / f (плюс округление). Таким образом, при выполнении f / i, i равно ~ 65 вместо 100.
i /= f
i
i = i / f