Ruby コア ライブラリには、非常に便利なSetクラスがあります。あらゆるタイプのオブジェクトを格納できます。
しかしご存知のように、( FloatRuby の) 浮動小数点数には精度の問題があります。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ですか?
(この問題は言語にとらわれないことを知っています。他の一般的な言語での解決策を歓迎します)