发现一个Excel计算的错误(bug都称不上,绝对错误)

在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,也试试呢。

刚试了,一样 :joy:

连那个错误值都一模一样吗?

嗯,不只是246,去掉或者加上任何一行数都会计算正确的,把单元格设置为数值型也没问题。如果是数据精度造成的,最多一位小数数字,而且是加法,连除法都没有,不像是数据精度和计算精度问题。印象中excel有个什么保护机制,存在一个最小的数字,用于默认值,具体记不清了,需要高手解答。。。

补充一下,与复制的格式也无关,手动输入这些行数字也会出错

哦哦,进制转换造成的误差,这个可能性最高,不过这种情况通常出现在乘除法里吧?

我在上面多加0.1,下面多减0.1,出来的错误结果也不一样,应该就是进制转换误差。
Pin2Screen_20240925_175538

不懂进制转换为什么会有误差,我网上搜的

又查了下:不是所有的算式都会出现这种情况,应当是小数转二进制过程中,有些小数(比如0.6)会出现无限循环造成的。

好吧,在大家的提醒下又查了一下,人家微软已经给出了答案:

1 个赞

不对,我想错了,赶紧删,有点丢人 :joy:

:joy:

不就是浮点数误差吗……

我之前说的是三进制,1除以3可以除净,我是说对了的。 :joy_cat:
不够自信

看来就是这种逻辑

哈哈哈,发现一大事。为了考验自己掌握三进制推算没有,我在excel自己写了一遍,然后让AI生成个表,对比一下,发现这个:

兄弟们赶紧去搜一下,截图保存,免得他明天改了后台,说我诽谤他。求保护!

比谷歌强一点点 :joy:

PS:使用最新的 Google Al Studio 1.5pro2时没有这个问题,可以正确回答,默认模型会出上图的结果。

Gemini其实也答对,前两张图如下。其他所有都人均答对,除了那个卖药的。