Ruby浮点数有很多小数,为什么?

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

为什么以下操作会导致我获得此值:

14.99 + 1.5 = 16.490000000000002
我希望是16.49。我怎样才能避免那些额外的小数呢?

这就是工作原理。如果您想要一个仍然是
Float
对象的整数,您可以这样做

result.round(2) #=> 16.49
或者,如果您只需要一个字符串:

"%0.2f" % result

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

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