簡單的excel數學錯誤

簡單的excel數學錯誤

首先,我不想對我的數字進行四捨五入,我使用的是 10 基數的數字,所以 excel 應該不需要做簡單的加法和減法。

A|  665.110000000000000000000000000000
B|  4.990000000000000000000000000000
C|  =a1+b1
D|  670.790000000000000000000000000000
E|  1,335.890000000000000000000000000000
F|  =e1-(c1+d1)

我應該得到 -5 但是 F1 返回

-4.999999999999770000000000000000

這是一份財務文件,因此我想避免四捨五入,更重要的是。我為什麼需要這樣做?我已將單元格格式設為貨幣,小數點後兩位,我將得到正確的顯示值,但對於所有計算,我仍然會得到 -4.9999...7,這會導致條件格式等進一步出現錯誤。

答案1

這個問題是由於幾乎所有計算機的基本硬體造成的。它們基於二進位系統,因此不會從 0 計數到 9,而是只計數 0 和 1,或以 2 為基數。

這很好,除非您發現您需要高精度十進制數。計算機只能以二分之一的冪的分數進行計數,即 1/2、1/4、1/8、1/16、1/32 等。準確地為1/3 或4.99,而不會放棄很多性能。

Excel 非常擅長隱藏這一事實,只有當您開啟 20 位元左右的小數時,您才會看到此錯誤。它透過舍入來實現此目的,但僅在顯示結果時進行舍入。

你說這是為了財務計算,你真的需要最終結果顯示到小數點後20位嗎?或者您是否只需要確保計算的精度足夠高,不會出現舍入誤差。如果是後者,您可能只需相信 excel 多年來一直在為無數金融組織完成其工作,沒有任何問題。而且您不必擔心那些舍入錯誤會導致您出現問題。

答案2

之前已經在這裡回答過這個問題。

僅僅因為您使用的是以 10 為基數的“Round”數字,並沒有什麼幫助——計算機以二進制形式存儲數字。以 10 為基數的四捨五入數字會轉換為二進制數字,最終會重複,當將該十進制轉換回來時,您會丟失資訊。

電腦使用者可以透過兩種方法解決這個問題:

1)將數學計算到一定數量的小數位,然後四捨五入到更少的小數位。 2) 使用 BCD 或其他精確的十進位表示法。

據我所知,Excel 不使用#2,因此選擇另一個選項。

答案3

Excel中有一個選項“顯示的精確度”,它可以有效地將數字自動舍入到您選擇顯示數字的精確度。

http://support.microsoft.com/kb/78113

不建議您這樣做,因為這可能會在您的計算中引入舍入誤差,因為您告訴Excel 四捨五入到小數點後兩位,而當前舍入誤差為小數點後15 位,因此根本不會影響您的計算。

相關內容