如何修正浮點算術中的進位誤差

文章翻譯 文章翻譯
文章編號: 214118 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

徵狀

在 Microsoft Excel 和 Microsoft Works 中,針對浮點數字進行算術運算時,可能會產生看似有微量誤差而不正確的結果。例如,方程式
=1*(.5-.4-.1)
可能會評估為 (-2.78E-17) 或 -0.0000000000000000278,而非 0。

發生的原因

此行為在 Excel 或 Works 中不會造成問題或限制;發生此行為的原因,是因為電子電機工程師協會 (Institute of Electrical and Electronics Engineers,IEEE) 754 浮點標準要求數字以二進位的格式儲存。

其他可行方案

方法 1

如果要降低浮點算術儲存不正確的影響,請使用 Round() 函數,將數字四捨五入到計算所需的小數位數。例如,如果您是使用貨幣,則可能會四捨五入到小數點 2 位數:

=ROUND(1*(0.5-0.4-0.1),2)

方法 2

您可以使用 [以顯示值為準] 選項,避免四捨五入的錯誤影響工作成果。這個選項會在工作表中,強制使各數字的值成為工作表上所顯示的精確度。

注意 使用 [以顯示值為準] 選項會影響累加計算的結果,這可能會使您的資料正確性隨著時間逐漸降低。只有在您確定顯示的精確度可以維持資料的正確性時,才應該使用這個選項。

若要使用 [以顯示值為準] 選項,請依照下列步驟執行:
  1. [工具] 功能表上,按一下 [選項]
  2. [計算] 索引標籤上,於 [活頁簿選項] 底下,按一下以選取 [以顯示值為準] 核取方塊。
  3. 按一下 [確定]
如果您使用 [以顯示值為準] 選項,就必須使用特定的數字格式來格式化您的數字。

若要將儲存格格式化為特定的數字精確度,請依照下列步驟執行:
  1. 選取您想要格式化的儲存格。
  2. [格式] 功能表上,按一下 [儲存格]
  3. [數值] 索引標籤上,按一下 [類別] 下的 [數值]
  4. [小數位數] 方塊中,選取您要的精確度 (小數位數)。
  5. 按一下 [確定]

其他相關資訊

IEEE 754 標準採用精簡且便於操作的方法來儲存浮點數字。這個標準是由 Intel 副處理器和實作浮點數學的大部分 PC 程式所使用。

IEEE 754 指定要以二進位的格式儲存數字,以降低儲存需求,並允許所有微處理器內建的二進位算術指令得以相對較快的方式處理資料。不過,有些屬於簡單、非重複的十進位數字,會被轉換成重複的二進位數字而無法精確儲存。

例如,在十進位數字系統中,數字 1/10 可以用下列簡單的小數點來表示:
.1
不過,二進位格式中的相同數字,卻會變成重複的二進位和十進位數字:
.0001100011000111000111 (以此類推)
這個數字不能以有限的空間量來表示。因此,在儲存時,這個數字會四捨五入為 -2.78E-17 左右。

如果執行了幾個算術運算以取得指定結果,這些進位誤差可能會累加。

?考

如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
78113 XL:浮點算術可能會在 Excel 中造成不正確的計算結果

Excel 2002 和 Excel 2003

如需有關如何變更計算結果之精確度的詳細資訊,請按一下 [說明] 功能表上的 [Microsoft Excel 說明],在 [Office 小幫手] 或 [解答精靈] 中輸入變更公式計算的時間與方式,然後按一下 [搜尋] 以檢視主題。

Excel 2000

如需有關如何變更計算結果之精確度的詳細資訊,請按一下 [說明] 功能表上的 [Microsoft Excel 說明],在 [Office 小幫手] 或 [解答精靈] 中輸入變更 Microsoft Excel 計算公式的方式,然後按一下 [搜尋] 以檢視主題。

屬性

文章編號: 214118 - 上次校閱: 2010年5月13日 - 版次: 6.0
這篇文章中的資訊適用於:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Office Excel 2003
關鍵字:?
kbprb KB214118
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com