找回密码
 立即注册

QQ登录

只需一步,快速开始

hjkl

初级会员

31

主题

77

帖子

390

积分

初级会员

积分
390
hjkl
初级会员   /  发表于:2021-7-5 17:38  /   查看:1944  /  回复:2
1金币
Excel中计算结果
image.png22084959.png

导入spreadjs结果
image.png421372069.png

附件是原始excel

123456789.rar

6.02 KB, 下载次数: 35

最佳答案

查看完整内容

您好, 此问题是由于Excel的精度问题导致的, SpreadJS对此做了更准确的精度控制,会将 0.5000000000000400最终处理为0.5,然后返回true。 而Excel返回了false,所以造成了计算结果不一致。(您可以理解为这是Excel的计算不精确) 所以,受Excel精度的影响,没有完美解决此问题的方案。 如果您只是想使计算结果与Excel保持一致,可以使用以下代码: 但可能会造成其他精度问题。

2 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-7-5 17:38:35
来自 3#
您好,
此问题是由于Excel的精度问题导致的,
SpreadJS对此做了更准确的精度控制,会将 0.5000000000000400最终处理为0.5,然后返回true。
而Excel返回了false,所以造成了计算结果不一致。(您可以理解为这是Excel的计算不精确)

所以,受Excel精度的影响,没有完美解决此问题的方案。
如果您只是想使计算结果与Excel保持一致,可以使用以下代码:
  1. GC.Spread.CalcEngine.Functions.CALC_PRECISION = 16;
复制代码
但可能会造成其他精度问题。

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-7-5 18:20:16
2#
本帖最后由 Lynn.Dou 于 2021-7-6 17:52 编辑

您好,
问题已复现,已将此问题记录下来,
有进展会在本贴更新。
本贴先做保留处理。(SJS-9160)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部