7

当我添加0.1+0.2时,我得到了,0.30000000000000004但是当我添加相同的数字时,ruby 1.8.7我得到了正确的答案0.3。我通过四舍五入得到,0.3但我只想通过添加和0.3ruby 1.9.20.10.2

4

2 回答 2

11

为此,您需要 bigdecimal 。

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

见以下链接:

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

于 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 回答