Jak iterować między 0.1f a 1.0f z przyrostami 0.1f w Javie? [duplikować]
Możliwy duplikat:
Java unosi się i podwaja, jak uniknąć tego, że 0.0 + 0.1 +… + 0.1 == 0.9000001?
Mam następujący problem w Javie - muszę iterować między 0.1f i 1.0f w przyrostach 0.1f, więc chciałbym, aby moje dane wyglądały tak:
0.1
0.2
0.3
0.4
...
0.9
Zamiast tego, kiedy to robię:
for(float i = 0.1f; i < 1f; i += 0.1f)
System.out.println(i);
dostaję
0.1
0.2
0.3
0.4
0.5
0.6
0.70000005
0.8000001
0.9000001
Wyobrażam sobie, że ma to związek ze sposobem, w jaki frakcje są reprezentowane przez komputer, ale chciałbym wiedzieć, dlaczego tak jest i czy jest coś, co mogę zrobić, aby to zatrzymać. dzięki.