1. 生活中0.1+0.2=0.3, 電腦中可不是這樣,為什麼呢? 大家都知道電腦類型都是有數據範圍的。整形int範圍是 正負21億左右,小數類型同樣也是有範圍的,但是即使0.1~0.2之前如果問你有多少小數? 無窮個!!! 那麼有限的範圍怎麼表示無限的數據呢? 告訴你表示不了,只能存儲一個無限 ...
1. 生活中0.1+0.2=0.3, 電腦中可不是這樣,為什麼呢?
大家都知道電腦類型都是有數據範圍的。整形int範圍是 正負21億左右,小數類型同樣也是有範圍的,但是即使0.1~0.2之前如果問你有多少小數? 無窮個!!!
那麼有限的範圍怎麼表示無限的數據呢? 告訴你表示不了,只能存儲一個無限接近的數。
另外大家都知道電腦所有數據都是二進位,0.5即 2的-1次方,0.25是2的-2次方,同樣解釋了為什麼不能表達所有小數。
這樣大家也就明白下麵這個例子 100個0.1相加為什麼不等於10了。
因為電腦是一個無限接近與0.1的數字去表示0.1,所以一個有誤差的數去參與計算,參與的越多誤差越大。
2.真對上面的情況,那在財務上怎麼處理小數位運算呢?
如果遇到小數,則先擴大為整數,最後結果計算出來以後,再除以擴大的倍數。請看下圖