量传 发表于 2024-11-13 11:22:44

Excel功能【以显示精度为准】在JS中无这项功能,如何解决


在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,计算正确


Lynn.Dou 发表于 2024-11-13 14:47:23

本帖最后由 Lynn.Dou 于 2024-11-13 14:52 编辑

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

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


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

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


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

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



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

Wilson.Zhang 发表于 2024-11-29 16:12:24

您好!由于您较长时间未回复,且从跟帖回复中了解到问题已得到有效解答,那就结帖了。如有新问题,欢迎发新帖沟通。
{:5_110:}
页: [1]
查看完整版本: Excel功能【以显示精度为准】在JS中无这项功能,如何解决