在 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
是的,我可以使用BigDecimal
type 来获取精确的数字。但是是否有可能给出Set
一个特定的比较函数,以便它可以承受一个小错误(例如1e-9
)?
(我知道这个问题与语言无关。欢迎使用其他常用语言的解决方案)