Question

Existe-t-il dans Ruby des fonctionnalités / syntaxes permettant de comparer deux flottants avec delta? Quelque chose de semblable à assert_in_delta (attendu_float, actual_float, delta) à partir de test / unit mais en retournant Boolean?

Était-ce utile?

La solution

(expected_float - actual_float).abs <= delta

Autres conseils

En fonction de votre application et de ce que vos valeurs en virgule flottante représentent réellement, il peut être judicieux de les convertir en Rationals avec une précision donnée. Alors, les comparaisons directes se comporteront toujours correctement puisque les Rationals ne sont que deux entiers.

Par exemple, si vous savez que vous traitez des montants en dollars américains, les stocker sous le nom amount.to_r.round (2) permet des comparaisons exactes pour l'égalité.

Juste une pensée ... il n'est pas nécessaire que toutes les valeurs non entières soient des flottants inexactement représentés

vous pouvez également avoir besoin d'un calcul de tolérance relative / delta

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top