У меня очень неприятная проблема с длинными суммами поплавков или удвоений в Java. По сути, идея заключается в том, что если я выполняю:
for ( float value = 0.0f; value < 1.0f; value += 0.1f )
System.out.println( value );
Я получаю:
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.70000005
0.8000001
0.9000001
Я понимаю, что есть накопление ошибки с плавающей точностью, однако, как избавиться от этого? Я попытался использовать удвоение до половины ошибки, но результат все тот же.
Любые идеи?