当我添加0.1+0.2
时,我收到了0.30000000000000004
但是当我在ruby 1.8.7
中添加相同的号码时,我得到了正确答案0.3
。我通过四舍五入得到0.3
,但我只想通过添加0.3
和ruby 1.9.2
0.1
0.2
答案 0 :(得分:11)
你需要bigdecimal才能开展工作。
(BigDecimal('0.1') + BigDecimal("0.2")).to_f
见以下链接:
答案 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是非常棘手的野兽。