Ruby 1.8 BigDecimal

时间:2013-05-15 04:07:28

标签: ruby

我记得 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的选项。有帮助吗? 谢谢。

1 个答案:

答案 0 :(得分:1)

您可以尝试https://github.com/marcandre/backports,声称提供“Ruby的最新功能向后移植到旧版本”。我一眼就看不出有关BigDecimal的任何内容,但是谁知道内部可能使用的内容。我以前用它来制作阵列,它至少值得一试。