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.