Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvPmNuIC 51 of 420 menu
◀ ▶

Неточные вычисления в Java

В битах дробь собирается из половин, четвертей, восьмых и таких же следующих долей. Если число складывается из этих долей без хвоста, оно лежит в памяти точно. 0.5 - это половина, 0.25 - четверть:

System.out.println(0.5 + 0.25);

Десятая доля из таких кусков не складывается. В десятичной записи не кончается 1/3, в битах так же не кончается 0.1. В double помещается ближайшее значение примерно на 15 значащих цифр. У float цифр около 7. На экран 0.1 часто выходит коротко, потому что печать подбирает краткую десятичную запись:

System.out.println(0.1);

Зазор проявляется в действии. Складываются не написанные десятые, а те значения, которые реально лежат в байтах:

System.out.println(0.1 + 0.2);

Вычитание устроено так же:

System.out.println(0.3 - 0.1);

Дан код:

double num1 = 0.1; double num2 = 0.7;

Найдите сумму этих переменных и выведите ее. Посмотрите, совпадает ли вывод с 0.8.

Дан код:

double num1 = 0.1; double num2 = 0.2;

Найдите сумму этих переменных и выведите ее. Посмотрите, совпадает ли вывод с 0.3.

Дан код:

double num1 = 0.25; double num2 = 0.25;

Найдите сумму этих переменных и выведите ее. Посмотрите, совпадает ли вывод с 0.5.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить