2

При таком коде

for (double i = 0; i < 2 * Math.PI; i += 0.1) {
            System.out.println(i);
    }

на вывод получается нечто подобное

0.0

0.1

0.2

0.30000000000000004

0.4

0.5

0.6

0.7

0.7999999999999999

0.8999999999999999

0.9999999999999999

1.0999999999999999

и т.д.

а хотелось бы

0.0

0.1

0.2

0.3

0.4

0.5

и т.д

Не понимаю почему, и как это исправить?

Saidolim
  • 8,341
  • 4
  • 26
  • 48
etoya
  • 41
  • 1
  • 10

1 Answers1

5

Сделайте так

for (int i = 0; i < 2 * Math.PI*10; i++) {
  System.out.println(i/10.0);
}
Aziz Umarov
  • 22,567
  • 2
  • 10
  • 33
  • А можно пояснить, как это работает? И чем i/10.0 отличается от i*0.1? – vp_arth Nov 01 '20 at 17:04
  • https://habr.com/ru/post/219595/
    Вот полезная статья, в конце статьи есть полезные ссылки.
    Рекомендую также почитать про Стандарт IEEE 754, данные "проблемы" с плавающей точкой не только в Java
    – Aleksey Nov 02 '20 at 01:25