November 2012
Intermediate to advanced
888 pages
54h 46m
Polish
Liczby zmiennopozycyjne nie nadają się z natury do bezwzględnie dokładnych porównań. Często zdarza się tak, że dwie liczby, które „powinny” być sobie równe, różnią się od siebie o bardzo niewielką wartość. Tłumaczy to dziwne na pozór zachowanie interpretera języka Ruby w niektórych sytuacjach, gdy w grę wchodzą liczby zmiennopozycyjne.
1.8 + 0.1 # => 1.9 1.8 + 0.1 == 1.9 # => false 1.8 + 0.1 > 1.9 # => true
Konieczne jest więc porównywanie liczb zmiennopozycyjnych w sposób mniej rygorystyczny — tak, by liczby różniące się „infinitezymalnie” traktowane były jako równe.
Najprostszym sposobem uniknięcia opisanego problemu jest rezygnacja z używania liczb zmiennopozycyjnych ...