0

我记得Matz说过的话:Ruby 1.8 很快就会死掉。但我别无选择。在这里,我使用的是 Ruby 1.8.7。与更高版本的 Ruby 相比,Big Decimal 的行为有所不同。

例如:

ree-1.8.7-2011.12 :001 > require 'bigdecimal'
 => true 
ree-1.8.7-2011.12 :002 > b=BigDecimal('0.0')
 => #<BigDecimal:9ce7148,'0.0',4(8)> 
ree-1.8.7-2011.12 :003 > b
 => #<BigDecimal:9ce7148,'0.0',4(8)> 
ree-1.8.7-2011.12 :004 > b==0
 => true

ree-1.8.7-2011.12 :005 > [b,b,0,0].uniq
 => [#<BigDecimal:9ce7148,'0.0',4(8)>, #<BigDecimal:9ce7148,'0.0',4(8)>] #Integer 0 is removed
ree-1.8.7-2011.12 :008 > [b,b,0,0].uniq.uniq
 => [#<BigDecimal:9ce7148,'0.0',4(8)>]  #Applying two times uniq gives desired result for given array

有什么补丁可以解决这个问题吗?抱歉,我没有升级 Ruby 的选项。有什么帮助吗?谢谢你。

4

1 回答 1

1

您可以尝试https://github.com/marcandre/backports,它声称提供“向后移植到旧版本的 Ruby 的最新功能”。乍一看,我没有看到任何关于 BigDecimal 的内容,但谁知道它可能在内部使用什么。我以前用它来做数组,至少值得一试。

于 2013-05-15T05:00:35.513 回答