时BigDecimal类破?这似乎是最好永远都不要发生以下情况: 需要注意的是a.to_f!= a.to_s.to_f

  
    

的A.class     =>的BigDecimal

         

a.to_f     => 18658.1072928

         

a.to_s     => “10865.81072928”

         

b.class     =>的BigDecimal

         

b.to_f     => 10000.0

         

b.to_s     => “10000.0”

         

(A - B).to_f     => 865.81072928

         

a.to_f - b.to_f     => 8658.1072928

  

任何想法可能什么错?我们正在运行红宝石1.8.7p72我们的服务器上,并1.8.7p173我们本地机器。

有帮助吗?

解决方案

如果您运行的是Mac OS X 10.6.3那么这可能是一个解释:的 http://www.abletech.co.nz/2010/03/osx-10-6-3-installs-new-ruby-与-故障-的BigDecimal /

要摆脱您可以使用问题的 RVM

其他提示

作为文档说:

  

<强> to_f

     

,则返回具有大致相同的值与BigDecimal数的新Float对象。正常精度限制和内置二进制算术浮误差适用。

这意味着,在浮红宝石行为就像到处浮法: HTTP:// EN。 wikipedia.org/wiki/Floating_point#Accuracy_problems

不是每个数字是通过浮法表示的。在这种情况下的数量为圆形。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top