1

可能重复:
ruby 浮点错误

在 Ruby 中,当从 5.0 中减去 4.7 时,我希望得到 0.3 的结果,但会得到:

~ $ irb
1.9.2p290 :001 > 5.0 - 4.7
 => 0.2999999999999998 

我猜这是有原因的,而不是它是一个错误?使用BigDecimal对象会产生相同的结果。我唯一的选择是round在结果上使用吗?

4

2 回答 2

6

浮点数失去精度。对此无能为力。所以,使用:

(5.0 - 4.7).round(1)

如果您需要更高的精度:

(0.50 - 0.47).round(2)
于 2012-12-04T15:52:00.133 回答
1

这不是一个错误。这就是浮点运算的工作原理。更多细节在这里: http: //floating-point-gui.de/

于 2012-12-04T15:53:21.537 回答