2016-07-16 56 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將是九個地方。

這就是浮點數的工作原理。不要期望他們整潔。