В чем разница между float и double в Java?

247
19 июля 2017, 22:23

Насколько я помню, float и double различаются диапазонами, что ведёт к разной точности и скорости вычислений. Однако сегодня заметил, что с разными числами округление происходит у этих типов данных по-разному. На скринах видно, что

  • в первом случае float обрубает значение, а double округляет (example1)
  • Во втором случае: float округляет, double обрубает значение(example2)

Какая еще есть разница между типами данных float и double или я что-то в упор не вижу?

Answer 1

Принципиальный нюанс здесь в том, что вы оперируете десятичными числами, а float и double — бинарные. Те числа, которые вы делите и получаете в результате, непредставимы в бинарной системе счисления без периодичных дробей. Подробнее:

Вычисления на числах с плавающей точкой не работают

То, что вы наблюдаете — это не округления и обрубания, а попытки компьютера впихать невпихуемое и сделать вид, что на самом деле всё в порядке. Так как количество битов у мантиссы и экспоненты типов float и double разная, то "округления" и "обрубания" будут происходить с вашей точки зрения "непредсказуемо". Эта ситуация усугубляется ещё и тем, что точность вычислений на совести процессора, который, вообще говоря, не обязан выдавать точность до последнего знака. На другом компьютере вы можете увидеть другие результаты — если не включите специальный "предсказуемый" режим, который медленнее. Но даже в этом случае вы получите только одинаковые, но "непредсказуемые" результаты на разных компьютерах.

Когда работаете с float и double, примите как данность, что они всегда с погрешностью.

READ ALSO
Что означает \p{Punct} в регулярном выражении?

Что означает \p{Punct} в регулярном выражении?

Посдкажите что делает данное регулярное выражение с \p{Punct}

236
Отправка данных формы POST Java EE

Отправка данных формы POST Java EE

Есть форма данных пользователяЕсть фильтр который обрабатывает форму, и если есть POST данные проверяет и сохраняет

238
Где можно скачать примеры JAVA программ? [требует правки]

Где можно скачать примеры JAVA программ? [требует правки]

Где можно скачать примеры Java программ? Чтобы было в одном архиве или собрано в одном местеМожет кто знает где можно скачать или ссылку откуда...

208
Как создать уникальную страницу WP?

Как создать уникальную страницу WP?

Есть сайт на WP с темой оформленияХочу создать WP-страницу, лэндинг, которая вообще никак не будет связана с основным сайтом (то есть, никаких...

205