使用ruby-1.9.2添加错误

时间:2011-03-24 05:53:37

标签: ruby floating-accuracy ruby-1.9.2

当我添加0.1+0.2时,我收到了0.30000000000000004但是当我在ruby 1.8.7中添加相同的号码时,我得到了正确答案0.3。我通过四舍五入得到0.3,但我只想通过添加0.3ruby 1.9.2

0.1 0.2

2 个答案:

答案 0 :(得分:11)

你需要bigdecimal才能开展工作。

(BigDecimal('0.1') + BigDecimal("0.2")).to_f

见以下链接:

http://redmine.ruby-lang.org/issues/4394

答案 1 :(得分:7)

你的旧红宝石骗了你:

$ ruby -v
ruby 1.8.7 (2010-06-23 patchlevel 299) [x86_64-linux]
$ irb
irb(main):001:0> printf("%40.40f\n", 0.1 + 0.2)
0.3000000000000000444089209850062616169453
=> nil

Floating point numbers是非常棘手的野兽。