一系列 Microsoft 試算表軟體,具有可用來對資料進行分析、製圖及通訊的工具。
Hi Albert,
請問您是否有嘗試設定過B3-E3所在的存儲格格式呢?
設定為【數值】格式,還是會出現這種問題嗎?
每次輸入這個67.7-67.5都會出現這種結果嗎?
請問您現在使用的是Office什麼版本呢?打開excel——檔案——帳戶——關於Excel——就可以看到您的版本資訊了。
希望以上資訊可以幫助您!
敝人的 Excel (2016家用版)發現有個嚴重的問題,我用最簡單的四則運算,其結果卻有的錯誤,有的又是正確的,如我下面拷貝出來的例子。
我應該要怎樣做才能改正這個 Bug 呢?
| 67.7 | =B3-E3 | =C3/E3 | 67.5 |
|---|---|---|---|
| 67.7 | 0.200000000000003 | 0.002962962962963 | 67.5 |
| 37.25 | =B6-E6 | =C6/E6 | 36.2 |
| 37.25 | 1.05 | 0.0290055248618784 | 36.2 |
請求施以援手,不勝感激!
Albert
一系列 Microsoft 試算表軟體,具有可用來對資料進行分析、製圖及通訊的工具。
鎖定的問題。 此問題已從 Microsoft 支援服務社群移轉。 您可以對其是否有幫助進行投票,但無法對問題新增註解或回覆,或進行追蹤。
由問題作者接受的回答
Hi Albert,
請問您是否有嘗試設定過B3-E3所在的存儲格格式呢?
設定為【數值】格式,還是會出現這種問題嗎?
每次輸入這個67.7-67.5都會出現這種結果嗎?
請問您現在使用的是Office什麼版本呢?打開excel——檔案——帳戶——關於Excel——就可以看到您的版本資訊了。
希望以上資訊可以幫助您!
您好,
感謝您的熱心回覆!
拿起電算機,
1/3=
*3=
0.9999999
1/5=
*5=
1
為啥除三乘三後不為1 ?因為計算誤差。
IEEE 754 是一個規範,規定數值如何存入電腦,包含了 Windows / Linux (Android 及 iOS) ,因此所有軟體計算結果都會相同。
電腦在存放有小數點的數字時,是以二分法逼近,所以 0.2000000000000003 這個就是誤差,簡單點你可以當成計算誤差。
為了讓你覺得不是在唬爛你,你可以參考維基百科:
https://zh.wikipedia.org/wiki/IEEE_754
從維基百科看到,這是國際規範。看不懂沒關係,這表示計算機概論不該在一開始就講這個,我也是等摸電腦好幾年後才回頭看懂這段,雖然他被當成常識,但很多人都不知道。既然是常識,這表示這是功能限制,不是 bug 。
Excel 是試算表,不是純數學軟體,純數學軟體有大數運算功能專門算解析解,但是純數學軟體很貴,也沒有試算表功能讓你拉來拉去。
如果是幣別,例如說美金取到小數點下兩位,通常會在公式就配合 Round 函數在小數點下兩位做四捨五入,捨去計算誤差。
有特定用途,可以拿出來講,大家討論看看能怎樣改善。
另外你把簽名檔當回文看了。
論壇有簽名檔是常識,但是微軟改版後,簽名檔跟本文混在一起,造成辨識度下降,看錯不是你的問題,是微軟論版改版造成的。
對不起,那篇IEEE 754 浮點數規範的原理的文章對我而言有點艱深。
我只是在想,很簡單的兩個數(十位數加小數點後兩位數)相減,怎麼也不可能會減出多餘小數點兩位以後的數字。如果連這麼簡單四則運算,都要用Round函數來消除小學生都不會犯的錯誤,那這個電腦我真不知道,對稍微複雜的運算,會不會也產生我們無法察覺的重大錯誤了。
我舉的例子就是:67.7-67.5應該等於 0.2,而不應該是 0.200000000000003。
而偏偏 37.25-36.2=1.05,這個在同一張工作表又用同樣的公式,所得的結果則是正確的。
我很疑惑,怎麼同樣的公式,有時結果正確,有時又是錯誤的呢?
前面貼的,是將工作表用"顯示公式"以後拷貝的。
對於表達得不清楚,我很抱歉,因為初初參加這個論壇,對於問題的適切表達,我可能還要多多學習。
您可否用簡單一點的方法來指導我呢?
感謝
Albert
計算機概論第二章會教關於 IEEE 754 浮點數規範的原理,這是全電腦都試用的問題。
如果有明確位數,可以配合 Round 函數。