当我添加0.1+0.2
时,我得到了,0.30000000000000004
但是当我添加相同的数字时,ruby 1.8.7
我得到了正确的答案0.3
。我通过四舍五入得到,0.3
但我只想通过添加和0.3
ruby 1.9.2
0.1
0.2
问问题
860 次
2 回答
11
为此,您需要 bigdecimal 。
(BigDecimal('0.1') + BigDecimal("0.2")).to_f
见以下链接:
于 2011-03-24T10:37:54.020 回答
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
浮点数是非常棘手的野兽。
于 2011-03-24T06:02:09.440 回答