質問

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)として保存すると、等しいかどうかを正確に比較できます。

考えてみてください...すべての非整数値が不正確に表現されるフロートである必要はありません

相対許容誤差/デルタ計算も必要になる場合があります

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top