请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

Lynn.Dou 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2025-1-26 16:26  /   查看:56  /  回复:0
本帖最后由 Lynn.Dou 于 2025-1-26 17:01 编辑

背景:
Excel在计算中依赖于浮点数来表示和处理数字,浮点数的表示方式有一个重要的特点:它使用二进制来存储数值,但并非所有十进制的数字都可以准确转换为二进制。在浮点数存储过程中,只有固定数量的二进制位可用来表示数值,这就导致了舍入误差。当进行加法、减法、乘法和除法等浮点运算时,这些误差会累积,导致最终结果出现精度问题。

例如,在 Excel A1单元格输入 15,A2单元格输入 14.8,A3单元格输入公式“=IF((A1-A2)=0.2,TRUE,FALSE)”,你会发现计算的结果为FALSE,而并非我们常识中的相等。
image.png621891784.png

功能介绍:
“以显示精度为准”是MSExcel中的一个设置选项,它允许 Excel 在显示和计算过程中基于当前单元格显示的数字进行处理,而不考虑实际存储的数值。这对于处理大量数字时,特别是在计算结果可能会由于显示精度不足而产生误差的情况,可以避免潜在的精度问题。
但它是全局的设置,会以格式化后的数字代替单元格真实值,所以相应的会引发其他公式的计算误差,并且可能会产生累积计算效果,导致数据随时间推移越来越不准确。

举例说明:
在开启”以显示精度为准”后,计算结果会按照显示数字0.97进行计算,最终计算结果1.94 与 真实计算结果1.93(1.930864) 有较大差距。
想象一下,如果D2单元格继续参与其他公式的计算,公式链越来越长,这个计算差距就会越来越大,对于一些业务(比如财会)会有严重的影响。
144549tldxznzbtnnbdn4z.gif274479369.png

所以即使在MSExcel中,”以显示精度为准“也是默认关闭的,而SpreadJS目前虽已有相关的需求,但是从需求的普适性和开发成本考虑,还处于低优先级。
在开发过程中,如果有相关需求,建议综合评估下该功能在业务中是否是必须的,它所造成的计算影响是否会影响其他业务。


关于可替代的解决方案,可以对目标公式使用round函数进行误差补偿,其优点是不会改变真实的公式计算结果,且可以保证导入导出的兼容性。
image.png708269042.png



评分

参与人数 1金币 +200 收起 理由
Joestar.Xu + 200 感谢支持!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部