2.2. Porównywanie liczb zmiennopozycyjnych
Problem
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.
Rozwiązanie
Najprostszym sposobem uniknięcia opisanego problemu jest rezygnacja z używania liczb zmiennopozycyjnych ...
Get Ruby. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.