0

为什么以下操作会导致我达到这个值:

14.99 + 1.5 = 16.490000000000002

我希望它是 16.49。我怎样才能避免那些额外的小数?

4

2 回答 2

1

这就是浮点运算的工作原理。如果你想要一个仍然是一个Float对象的四舍五入的数字,你可以这样做

result.round(2) #=> 16.49

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

"%0.2f" % result
于 2012-10-28T09:53:02.600 回答
0

这不是因为 Ruby,而是因为浮点数在计算机中的表示方式(根据IEEE 754标准)。

简而言之,一些浮点数无法在计算机中精确表示。如果你需要更好的精度,你可以试试这个BigDecimal类。

于 2012-10-28T09:55:14.717 回答