1
domosekai 2020-07-28 19:53:31 +08:00 via Android
浮点运算精度问题,都这样的
|
2
across 2020-07-28 19:56:04 +08:00
这个不止浮点了吧,excel 里面是 decimal ?
|
3
zsdroid 2020-07-28 20:50:32 +08:00
WPS 未复现
|
4
iamsad3508 2020-07-28 21:01:16 +08:00
office365 也没有问题,你应该验证一下公式有没有输错
|
5
realpg 2020-07-28 21:04:57 +08:00 1
到底是 D 还是 B
然后你的原始数据是 2345 行 你这里 4567 是啥 |
6
humansjl 2020-07-29 00:02:14 +08:00
贴的什么图
|
7
voids OP 不好意思,贴图有点问题,录了一个 gif..
![123.gif]( https://i.loli.net/2020/07/29/7ly1D8TXwQYaqbF.gif) |
8
HeyWeGo 2020-07-29 08:52:26 +08:00
|
11
Counter 2020-07-29 09:17:11 +08:00
office 365 未复现,均为 0
|
13
yiXu 2020-07-29 09:34:32 +08:00
Office 365 未复现问题
|
14
voids OP @Counter @HeyWeGo @iamsad3508 @yiXu 谢谢楼上的几位,如果可以的话,请看下源数据,我换了几次电脑还是有这个问题..
链接: https://pan.baidu.com/s/1FdUy7VFEEXgkl6dzm8ho2A 提取码: ebig |
15
yiXu 2020-07-29 09:51:01 +08:00
你这个源数据,没怎么看懂,建议给出你 gif 使用的示例文档
|
16
yiXu 2020-07-29 09:57:20 +08:00 1
|
17
yiXu 2020-07-29 10:00:10 +08:00
该文章在最后指出:
“值达到零时的示例 在 Excel 95 或更早版本中,在新工作簿中输入以下内容: A1: = 1.333 + 1.225-1.333-1.225 右键 clickcell A1,然后单击 "设置单元格格式"。 在 "数字" 选项卡上,单击 "类别" 下的 "科学 将小数位数设置为 15 。 Excel 95 显示 2.22044604925031 E-16,而不是显示 0 。 但是,Excel 97 引入了一种优化,尝试纠正此问题。 如果加法或减法运算结果的值为或接近零,Excel 97 和更高版本将补偿因将操作数转换为二进制而引入的任何错误。 上面的示例在 Excel 97 和更高版本中执行时,在科学记数法中正确显示 0 或 0.000000000000000 E + 00 。 ” |
18
voids OP @yiXu 67 行的计算结果有三个不为零(蓝色填充的单元格)的情况,而且如果把最后一个加法运算移动到前面计算(比如将 F67 的公式改为:=F54+F53-F55-F57-F59-F60-F61-F62-F63 ),结果就又是零了。
|
19
yiXu 2020-07-29 10:56:14 +08:00 1
@voids 我测试了多种数据格式的情况,发现如下不规律现象:
1. 需要被计算的单元格设置为数值,不使用公式。 2. 多次调换单元格属性:数值或者常规。 3. 多次尝试重新计算公式(将等于号删除确认,再加上重新计算) 4. 2,3 步骤多次实验,有时长时间无法使这个误差归零(多尝试可以),有时可以很快就归零。 个人结论: 1. 该问题可能是缓存问题,office 有一定优化,但可能无法快速反应。 2. 中间过程的 round 函数,可以将中间结果显示为相应精度。 3. 但个人怀疑后续计算会使用公式函数加入计算,造成 round 函数无法限制最后的精度。 4. 建议仅使用 round 函数,在最后一步计算使结果符合相关的精度要求。 |