[問題] Excel的奇怪Bug?

作者: iamrubber (Rubber)   2015-07-29 01:21:08
(若是和其他不同軟體互動之問題 請記得一併填寫)
軟體:Excel
版本:2007
其實我只是很簡單再寫一個資料檢測公式
(函數知道的不多 所以都用簡單的運算式做資料檢測整理)
意外發現一個Bug
A1=0.07
B1=A1*100
C1=ROUND(A1*100,0)
D1=B1-C1
E1=IF(D1=0,"Y","N")
F1=IF((B1-C1)=0,"Y","N")
理論上 E1跟F1儲存格應該得到一樣的答案
但是E1得到的是Y F1得到的是N
然後只有某些數字會有這樣的bug
A1= 0.07 0.14 0.28 0.29 0.55~0.58等.....
若是A1= 0.007 B1跟C1皆是乘上1000也不會有這樣的問題
這個bug最後是不影響我的資料整理(改寫乘上1000就解決了...)
只是對這個Bug感到無比疑惑....="=
有爬文查到 "浮點算術中的進位誤差" 這個Bug
但我也不知道是不是能用來解釋我遇到的這個問題
有人有解嗎?
作者: soyoso (我是耀宗)   2015-07-29 07:42:00
應可解釋遇到的問題,以a1=0.07,b1=a1*100來看,儲存格的值如連結https://goo.gl/yIjmdO 7.0000000000000009如a1改為0.08時,儲存格的值https://goo.gl/D9Llsb 為8a1=0.07時f1評估值公式b1-c1時產生非0的情形https://goo.gl/mMGfYU
作者: iamrubber (Rubber)   2015-08-02 01:21:00
可是如果b1-c1時產生非0的情形 為什麼E1="Y"?
作者: soyoso (我是耀宗)   2015-08-02 16:16:00
d1的b1-c1是0,https://goo.gl/5wpUU8所以E1="Y"回文b1-c1產生非0是指f1評估值公式內,所顯示為非0的情況

Links booklink

Contact Us: admin [ a t ] ucptt.com