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?

War es hilfreich?

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

http://realTimecollisionDection.net/blog/?p=89

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top