可能重复:
ruby 浮点错误
在 Ruby 中,当从 5.0 中减去 4.7 时,我希望得到 0.3 的结果,但会得到:
~ $ irb
1.9.2p290 :001 > 5.0 - 4.7
=> 0.2999999999999998
我猜这是有原因的,而不是它是一个错误?使用BigDecimal
对象会产生相同的结果。我唯一的选择是round
在结果上使用吗?
浮点数失去精度。对此无能为力。所以,使用:
(5.0 - 4.7).round(1)
如果您需要更高的精度:
(0.50 - 0.47).round(2)
这不是一个错误。这就是浮点运算的工作原理。更多细节在这里: http: //floating-point-gui.de/