質問
Rubyには、2つの浮動小数点数をデルタと比較するための機能/構文がありますか? test / unit の assert_in_delta(expected_float、actual_float、delta)に似ていますが、ブール値を返しますか?
解決
(expected_float - actual_float).abs <= delta
他のヒント
アプリケーションと、浮動小数点値が実際に何を表しているかに応じて、それらを特定の精度でRationalsに変換するのが理にかなっている場合があります。 Rationalは単なる2つの整数であるため、直接比較は常に正しく動作します。
たとえば、米国の通貨額を扱っていることがわかっている場合、それらを amount.to_r.round(2)
として保存すると、等しいかどうかを正確に比較できます。
考えてみてください...すべての非整数値が不正確に表現されるフロートである必要はありません
相対許容誤差/デルタ計算も必要になる場合があります
所属していません StackOverflow