Cytat(pheter @ 28.10.2009, 21:34:01 )

Nie wykrywa i wykrywać nie musi, bo 0.1 to wcale nie taka "okrągła" liczba jak się Tobie wydaje, a 0.01 tym bardziej
Przeczytaj posty powyżej, powinno pomóc w zrozumieniu.
To ja może wspomnę, że najlepsze pod względem "okrągłości" liczby w systemach komputerowych są dane łatwo zapisujące się binarnie, przykładowo 0.125

Dlaczego? Zapiszcie sobie tę liczbę binarnie to zobaczycie

Dla leniwych wyjaśnię, że kolejne liczby po przecinku to coraz wyższe ułamki dwójki. Tak więc binarnie:
0.1(bin) = 2^-1 = 1/2^1 = 1/2 = 0.5(dec)
0.01(bin) = 2^-2 = 1/2^2 = 1/4 = 0.25(dec)
0.001(bin) = 2^-3 = 1/2^3 = 1/8 = 0.125(dec)
...i tak dalej

Te liczby się dodają bez żadnych przybliżeń i można na nich liczyć bezpiecznie i to do ułamków dwójki są zaokrąglane liczby takie 0.75 to binarnie 0.11, ale już 0.76 to już będzie wariacja 0.110101... i dalej z precyzją lecąc jeszcze ileś zer i jedynek byleby jak najbliżej tego być. To sprawia, że dodając dwie takie liczby nie ma gwarancji dokładności. Są systemy, które to obchodzą i to w nich powinno się zapisywać dane jeśli chcesz mieć gwarancję dokładności. Poczytaj może nieco o BCD to Ci się rozjaśni temat. Inaczej zapisują one dane przez co są naprawdę dokładne, ale niestety kosztem zużywanej pamięci.