Ruby コア ライブラリには、非常に便利なSet
クラスがあります。あらゆるタイプのオブジェクトを格納できます。
しかしご存知のように、( Float
Ruby の) 浮動小数点数には精度の問題があります。1.2-1.0
等しくありません0.2
。
s = Set.new()
s.add(1.2-1.0)
s.add(0.2)
s.size
=> 2
はい、type を使用BigDecimal
して正確な数値を取得できます。Set
しかし、小さなエラー (例: ) に耐えることができるように、特定の比較関数を与えることは可能1e-9
ですか?
(この問題は言語にとらわれないことを知っています。他の一般的な言語での解決策を歓迎します)