在Ruby中,当从5.0中减去4.7时,我希望结果为0.3,但得到:
~ $ irb
1.9.2p290 :001 > 5.0 - 4.7
=> 0.2999999999999998
我猜这是有原因而不是它的错误?使用BigDecimal
个对象会产生相同的结果。我唯一的选择是在结果上使用round
吗?
答案 0 :(得分:6)
浮动失去精确度。没有什么可以做的。所以,使用:
(5.0 - 4.7).round(1)
如果您需要更高的精确度:
(0.50 - 0.47).round(2)
答案 1 :(得分:1)
这不是一个错误。这是浮点算术的工作原理。更多详情:http://floating-point-gui.de/