在Excel里录入下面几行数字,求一下和看看:
304.5
110.5
2237
980
900
900
237.5
246
-1.98
-4532
-1135.52
-246
结果是不是有问题?
目前在2016-2024版本中都复现了,不知道别的版本有没有问题。
在Excel里录入下面几行数字,求一下和看看:
304.5
110.5
2237
980
900
900
237.5
246
-1.98
-4532
-1135.52
-246
结果是不是有问题?
目前在2016-2024版本中都复现了,不知道别的版本有没有问题。
试过了,我认为是bug。这些数字加起来等于0。如果去掉246和-246两个数,结果是正确的。不知道是什么原因触发了这个bug。得到的结果是是一个很小的数,个人认为是因为数据精度的问题。
算bug吧
在不设置单元格式的前提下复制数值并求和会复现错误
换成其他数列不一定能复现
修改/删除数列中任意数值都会重新计算,自动更正结果
但手动检查公式错误不会报错
测试发现重点是求和公式所在单元格的格式
无论是复制前还是之后修改该单元格的格式为数值都不会算错
以前也遇到过,我搜的结果是:
Excel为了提高计算效率,使用浮点数格式进行数学计算。但是,由于某些十进制小数在转换为二进制时会产生无限循环小数,Excel就可能无法完全精确地表示这些小数,从而导致求和时的微小误差。
谁用wps,也试试呢。
刚试了,一样
连那个错误值都一模一样吗?
嗯,不只是246,去掉或者加上任何一行数都会计算正确的,把单元格设置为数值型也没问题。如果是数据精度造成的,最多一位小数数字,而且是加法,连除法都没有,不像是数据精度和计算精度问题。印象中excel有个什么保护机制,存在一个最小的数字,用于默认值,具体记不清了,需要高手解答。。。
补充一下,与复制的格式也无关,手动输入这些行数字也会出错
哦哦,进制转换造成的误差,这个可能性最高,不过这种情况通常出现在乘除法里吧?
我在上面多加0.1,下面多减0.1,出来的错误结果也不一样,应该就是进制转换误差。
不懂进制转换为什么会有误差,我网上搜的
又查了下:不是所有的算式都会出现这种情况,应当是小数转二进制过程中,有些小数(比如0.6)会出现无限循环造成的。
好吧,在大家的提醒下又查了一下,人家微软已经给出了答案:
不对,我想错了,赶紧删,有点丢人
…
不就是浮点数误差吗……
我之前说的是三进制,1除以3可以除净,我是说对了的。
不够自信
看来就是这种逻辑