Frage
Gibt es in Ruby einige Funktionen/Syntax, um zwei Schwimmer mit Delta zu vergleichen? Etwas Ähnliches wie ASSERT_IN_DELTA (erwartete_float, tatsächlich_float, Delta) aus Test/Einheit Aber zurückkehren Boolean?
Lösung
(expected_float - actual_float).abs <= delta
Andere Tipps
Abhängig von Ihrer Bewerbung und denjenigen, was Ihre schwimmenden Punktwerte tatsächlich darstellen, könnte es sinnvoll sein, sie mit einer bestimmten Präzision in Rationals umzuwandeln. Dann verhalten sich direkte Vergleiche immer richtig, da Rationals nur zwei ganze Zahlen sind.
Wenn Sie beispielsweise wissen, dass Sie mit uns Währungsbeträgen zu tun haben, speichern Sie sie als amount.to_r.round(2)
Ermöglicht genaue Vergleiche für Gleichheit.
Nur ein Gedanke ... nicht alle Nichttegerwerte müssen ungenau vertreten sein
Möglicherweise benötigen Sie auch eine relative Toleranz- / Delta -Berechnung