2012-10-28 50 views
0

为什么下面的操作导致我这个值:Ruby有很多小数点,为什么?

14.99 + 1.5 = 16.490000000000002 

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

+1

[什么每台计算机科学家应该知道关于浮点运算(http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) –

回答

1

那怎么floating point arithmetic作品。如果你想有一个圆形的数量仍然是一个Float对象,你可以做

result.round(2) #=> 16.49 

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

"%0.2f" % result 
0

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

总之,某些浮点数字就不能完全以计算机为代表。如果您需要更高的精度,您可以尝试BigDecimal类。