红宝石带有许多小数,为什么



为什么以下操作导致我达到此值:

14.99 + 1.5 = 16.490000000000002

我希望它是16.49。我如何避免那些额外的小数?

这就是浮点算术的工作方式。如果您想要仍然是Float对象的圆形数字,则可以做

result.round(2) #=> 16.49

,或者如果您只需要一个字符串:

"%0.2f" % result

这不是造成红宝石,而是由于浮点数在计算机中表示的方式(根据IEEE 754标准)。

简而言之,某些浮点数不能完全在计算机中代表。如果您需要更好的精度,则可以尝试BigDecimal类。

最新更新