excel计算结果不对?
如图所示,A1单元格为0.8035;A2单元格为0.803,A3单元格是一个判断公式。A3公式:=IF((A1-A2)=0.0005,1,0),谁能告诉我,为什么A3的结果是0而不是1???
这是所谓的浮点误差
十进制专2进制引起
整数没问题,
表述成2的级数和
十进制整数是可以分尽的
十进制有限小数可能会是2进制无限不循环小数
因此会有小的差别,判断等于前先四舍五入处理
这就涉及到一个精度问题,在电脑中数值计算是二进制完成的,在10进制中这个数值有效位只有四位小数,但在2进制中确是一个很长的数值,在计算中,就会根据电脑计算位数进行取舍后计算,从而出现误差.
(0.8035-0.803)-0.0005在我的电脑中计算结果是-5.50775E-17即小数位后17位的数,虽然很小但也不是0
因此这类计算判断公式最好考虑有效数字,比如写
ROUND(A1-A2,9)=0.0005
四舍五入,别太长即可
热门标签: