У меня очень неприятная проблема с длинными суммами плавает или удваивается в 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
Я понимаю, что происходит накопление ошибки плавающей точности, однако, как от этого избавиться? Я попытался использовать удвоение, чтобы вдвое уменьшить ошибку, но результат остался тем же.
Есть идеи?