[问题] 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