
给大家出道小学生的计算题:
4.1-4.2+1=?
你的答案是:0.9
但Excel的答案可不是0.9,因为让你输入的0.9(C10)=Excel计算结果(C9),得到了FALSE。

将结果保留16位小数,我们发现Excel给出的答案是:0.8999999999999990,难怪两个单元格不相等了。

再来道难点的:42-41.7=?
你的答案是:0.3,再看看Excel的答案:

于是有了下面学员的问题:

其实不光在Excel中计算有问题,就连输入都有问题:
比如输入39524.848,实际值却变成了39524.8479999999,你试试!

这是为什么?
【浮点误差】
Excel是用二进制(0和1)来存储数据的,而我们看到的却是十进制。
我们先来看看Excel是怎么将十进制转为二进制的:
【整数部分】

10的二进制为:1010

22的二进制为:10110
【小数部分】

0.8125的二进制:0.1101

0.1的二进制为0.000110011001100……
【整数和小数混合数值】【浮点误差】
明白了吧!看来计算结果出现这种误差是避免不了的,任何软件只要是二进制都避免不了这种问题,尤其是财务人员更容易遇到。
怎么解决呢?
方法1:
方法2:0.8999999999999990,只不过数据核对时不会出现不一致的结果。还要注意此设置将对整个工作簿所有单元格生效。

更多相关学员问题:
Excel为什么用round保留两位小数后,求和还有可能出现多位小数?
[求助]round保留两位之后,求和数却有很多位,为什么?
Excel求和后显示很多位小数?
excel公式结果出现很多位小数怎么办?
相减公式,怎么无故出来很多个小数位?
EXCEL中只对有两位小数的数字进行加减运算,结果却出现多位小数?
excel公式就有加减,选择性粘贴选数值时却有好多位小数
Excel的计算精度问题?
浮点误差是怎么形成的?
什么是浮点误差?
浮点误差怎么解决?