ОБСУЖДЕНИЕ

Типы данных

2 ответов 4,3 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Статус
Закрыто для дальнейших ответов.
Автор темы
Объясните пожалуйста, почему так, и как этого избежать!


Код:
for (double i=0; i<0.8; i+=0.2)
System.out.println(i);
При выводе результатов этого цикла получаю следующее:

0.0
0.2
0.4
0.6000000000000001

Непонятен результат последнего выполнения цикла.
 
Кадет, чему вас учили на предмете "Микропроцессорная техника". Ну или как-нибудь так. Почитайте где-либо про округление! Не зачет кадет.
 
накапливающаяся ошибка при вычислениях с плавающей точкой. Эти вычисления НЕ точные.
точность указывается для каждого типа данных.
форматируйте при выводе или округляйте, пользуйтесь умножением вместо n сложений (меньше накапливается ошибка) - смотря что Вам надо...

Добавлено: вот тут почти всё сказано:
https://codeby.net/threads/31867.html?vi...st&p=147829
 
Статус
Закрыто для дальнейших ответов.