Типы данных

  • Автор темы Cadet
  • Дата начала
Статус
Закрыто для дальнейших ответов.
C

Cadet

Гость
#1
Объясните пожалуйста, почему так, и как этого избежать!


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

0.0
0.2
0.4
0.6000000000000001

Непонятен результат последнего выполнения цикла.
 

vital

Больной Компом Детектед
29.01.2006
2 432
42
#2
Кадет, чему вас учили на предмете "Микропроцессорная техника". Ну или как-нибудь так. Почитайте где-либо про округление! Не зачет кадет.
 

hosm

* so what *
18.05.2009
2 442
9
#3
накапливающаяся ошибка при вычислениях с плавающей точкой. Эти вычисления НЕ точные.
точность указывается для каждого типа данных.
форматируйте при выводе или округляйте, пользуйтесь умножением вместо n сложений (меньше накапливается ошибка) - смотря что Вам надо...

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