2016-12-08 86 views
1

當我試圖乘以3(整型)與112.1(Double)時,我得到的結果包含許多小數點。Integer vs Double乘法給出非常奇怪的輸出

Integer a=3; 
Double b=112.1; 
Double result=a*b = 336.29999999999995 

但是當我們乘以2(整數)與112.1(雙),那麼小數點是如此之小。

Integer a=2; 
Double b=112.1; 
Double result=a*b = 224.2 

有人可以給我這個奇怪的行爲來的原因嗎?

+1

因爲'double'存儲在基地2,而不是基地10. – 4castle

+2

[SMBC - 機器人互聯網](http://www.smbc-comics.com/?id=2999)。 –

+0

哈哈@ElliottFrisch – GurV

回答

0

您不能存儲分數的實際十進制表示法。

這是因爲計算機使用二進制來保存任何值,包括小數值。

因此,實際保存的和您要存儲的內容之間存在一些差異。