2016-07-16 55 views
0

我正在使用ruby 2.3.0p0。Ruby浮点加法错误

我一直在尝试红宝石使用2个浮点数做简单的加法

irb(main):001:0> 1.50 + 14.99 
=> 16.490000000000002 

期望的结果应该是16.49而不是16.490000000000002

a = 1.5 
b = 14.99 
c = a + b 

我怎么能解决了这个问题,让我可以得到16.49变量c

干杯。

+1

[每个计算机科学家应该知道的浮点算术](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) –

+0

嗯,我想我已经解决了它一种可能不那么优雅的方式。要求'大大小小'; (BigDecimal('1.5')+ BigDecimal('14 .99'))。to_f。干杯。 –

回答

2

由于浮点数并不像你想的话,它们通常包括来自各种计算产生的噪音极小位的精确,但它是你的责任,指定你想要什么级别的精确度显示他们的时候:

a = 1.5 
b = 14.99 

c = a + b 

puts '%.2f' % c 

这里的%.2f表示有两个地方。 %.9f将是九个地方。

这就是浮点数的工作原理。不要期望他们整洁。