为什么以下操作会导致我达到这个值:
14.99 + 1.5 = 16.490000000000002
我希望它是 16.49。我怎样才能避免那些额外的小数?
为什么以下操作会导致我达到这个值:
14.99 + 1.5 = 16.490000000000002
我希望它是 16.49。我怎样才能避免那些额外的小数?
这就是浮点运算的工作原理。如果你想要一个仍然是一个Float
对象的四舍五入的数字,你可以这样做
result.round(2) #=> 16.49
或者如果你只需要一个字符串:
"%0.2f" % result
这不是因为 Ruby,而是因为浮点数在计算机中的表示方式(根据IEEE 754标准)。
简而言之,一些浮点数无法在计算机中精确表示。如果你需要更好的精度,你可以试试这个BigDecimal
类。