none
EXCEL 2003 BUG RRS feed

  • 問題

  • 我在設定公式運算的過程中發現一個奇怪的現象
    在EXCEL運算下列運算式的結果是錯誤的
    -0.5+0.6-0.1-0運算結果=2.77556E-17≠0
    但為什麼算出來的結果不等於零??
    我想這應該是EXCEL2003的BUG吧!

    我目前解決方法是設定儲存格格式為數字,小數點取2位。

    請各位大大確認一下!!
    2008年6月12日 上午 09:01

解答

  • 我研究了一下 發現這不是BUG喔

     

    因為EXCEL欄位有許多種格式..

    預設每一格都是通用格式

     

    當你做了浮點運算後 得出2.77556E-17 這是科學運算的數值表示方式

    代表 2.77556*10^-17 的意思

     

    但你一定想問 2.77556*10^-17 不是零阿??

     

     

    我想是因為電腦運算時是使用二進位方式運算

     

    所有數值都要轉為二進位才能算 福點數在二進位十進位時轉換會有些許誤差 如果你寫過VB 6程式你就知道了!!

     

     

    將欄位明訂用數值顯示 就OK了!!

    2008年6月12日 上午 10:33
  • Excel 不是數學軟體,所以會存在計算誤差,不像數學軟體會特別處理計算誤差。

     

    這再計算機概論教 資料型態 浮點數 時會說 (IEEE 754)

     

    舉個簡單的例子:

    電算機拿起來按

    1/3 = 0.3333333

    *3 = 0.9999999

     

    這是計算機的計算誤差,計算機是位數誤差,電腦是用 2 次方倍推算,所以誤差方式稍有不同。

     

    數值分析時,會用相對精度來比較,小於指定的相對精度視為相等。

     

    2008年6月13日 上午 04:10
    版主
  • 關於浮點的問題及解決方式,可以參照 "如何修正浮點算術中的進位誤差" 一文。
    網址如下:
    http://support.microsoft.com/kb/214118/zh-tw
    2008年7月11日 上午 07:21

所有回覆

  • HI 請問你公式怎麼打的阿? 判斷是否為零?

     

    -0.5-0.6+0.1-0=2.77556E-17 ???

     

     

    麻煩提供一下 我想試試看

    2008年6月12日 上午 09:24
  • A1=-0.5; B1=0.6; C1=0.1; D1=0
    公式是=A1+B1-C1+D1
              =-0.5+0.6-0.1+0結果應該會等於零,
    但運算的結果卻是2.77556E-17。
    我想這應該是一個BUG。
    2008年6月12日 上午 10:00
  • 我研究了一下 發現這不是BUG喔

     

    因為EXCEL欄位有許多種格式..

    預設每一格都是通用格式

     

    當你做了浮點運算後 得出2.77556E-17 這是科學運算的數值表示方式

    代表 2.77556*10^-17 的意思

     

    但你一定想問 2.77556*10^-17 不是零阿??

     

     

    我想是因為電腦運算時是使用二進位方式運算

     

    所有數值都要轉為二進位才能算 福點數在二進位十進位時轉換會有些許誤差 如果你寫過VB 6程式你就知道了!!

     

     

    將欄位明訂用數值顯示 就OK了!!

    2008年6月12日 上午 10:33
  • 對了 建議在運算金錢資料時 確實使用將資料設為 貨幣格式

    這樣就可以避免誤差!!

     

    2008年6月12日 上午 10:38
  • 基本上用貨幣格式在顯示上及實用上都是沒問題的,
    但是如果將該儲存格乘以較大的數值如:10e15,則該儲存格顯示的結果依然不會是零。
    還是會有精度上的誤差產生。


    2008年6月13日 上午 02:25
  • Excel 不是數學軟體,所以會存在計算誤差,不像數學軟體會特別處理計算誤差。

     

    這再計算機概論教 資料型態 浮點數 時會說 (IEEE 754)

     

    舉個簡單的例子:

    電算機拿起來按

    1/3 = 0.3333333

    *3 = 0.9999999

     

    這是計算機的計算誤差,計算機是位數誤差,電腦是用 2 次方倍推算,所以誤差方式稍有不同。

     

    數值分析時,會用相對精度來比較,小於指定的相對精度視為相等。

     

    2008年6月13日 上午 04:10
    版主
  • 關於浮點的問題及解決方式,可以參照 "如何修正浮點算術中的進位誤差" 一文。
    網址如下:
    http://support.microsoft.com/kb/214118/zh-tw
    2008年7月11日 上午 07:21