找回密码
 立即注册

QQ登录

只需一步,快速开始

量传

金牌服务用户

3

主题

6

帖子

23

积分

金牌服务用户

积分
23
最新发帖
量传
金牌服务用户   /  发表于:2024-11-13 11:22  /   查看:85  /  回复:1

在Excel中公式计算不正确,需要打开Excel自带功能【以显示精度为准】才能显示正确,目前在葡萄城JS中无这项功能,导致无法正常使用
1.这项功能是否可以添加,具体什么时间可以加上
2.如果无法添加,有无其他方法可以替代此功能进行使用

附件:Excel表格为示例,两张图片分别为【以显示精度为准】功能位置 和 未打开功能计算错误显示
例:E4=15   E5=14.8     E6【公式:=E4-E5】=0.2    E8=0.2     E10【公式:=IF(E6<E8,"P","F")】    打开功能前显示为P,计算错误;打开功能后显示为F,计算正确

2.png 5A70C70D-C570-49fa-812B-30C9B5919289.png

以显示精度为准.xls

18.5 KB, 下载次数: 2

示例

1 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-11-13 14:47:23
沙发
本帖最后由 Lynn.Dou 于 2024-11-13 14:52 编辑

您好,
首先需要与您明确下使用这个功能的背景,您可以通过下文简单了解下:

在计算机中,受浮点数的影响公式计算结果会产生精度问题, 比如如果您在js中计算 0.1+0.2,会发现结果并非预计的0.3。在MSExcel(WPS同理)和SpreadJS中,就像您给出的示例,if的计算结果会受影响。
image.png988942260.png

”以显示精度为准“ 这个功能虽然可以解决示例的问题,但它是全局的设置,会以格式化后的数字代替单元格真实值,所以相应的会引发其他公式的计算误差,并且可能会产生累积计算效果,导致数据随时间推移越来越不准确。

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

所以即使在MSExcel中”以显示精度为准“也是默认关闭的,而SpreadJS目前虽已有相关的需求,但是从需求的普适性和开发成本考虑,还处于低优先级。
建议您可以结合前文综合评估下,该功能在您的业务中是否是必须的,它所造成的计算影响是否会影响其他业务。如果您有其他的应用场景,也欢迎补充说明,我会对该产品需求加以补充,以便后续产品经理进行需求评估。

关于可替代的解决方案,可以对目标公式使用round函数进行误差补偿,其优点是不会影响其他公式的计算结果。
如下图示例:
image.png123507994.png


下方链接为微软对于浮点运算误差的说明,同样介绍了round函数使用方式,您可以了解下:
https://learn.microsoft.com/zh-c ... c-inaccurate-result

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部