找回密码
 立即注册

QQ登录

只需一步,快速开始

yue1859921

注册会员

17

主题

63

帖子

162

积分

注册会员

积分
162
yue1859921
注册会员   /  发表于:2023-9-26 11:53  /   查看:777  /  回复:7
1金币
本帖最后由 Clark.Pan 于 2023-9-27 16:03 编辑


产品名称:GcExcel
版本:V6.2

Spread页面中通过公式计算 显示的  “符合”   但是通过gcexcel转换后,pdf上显示的是“不符合”
麻烦查下原因 谢谢

image.png514154357.png
image.png157980345.png

转pdf后,显示的却是 不符合

image.png180005187.png

image.png138644408.png

testpdf.ssjson

32.26 KB, 下载次数: 41

最佳答案

查看完整内容

您好,-0.3被解析为-0.300000000001可以参考该微软的官方说明文档:https://learn.microsoft.com/zh-c ... c-inaccurate-result 之所以会出现这个问题,主要是是因为双浮点的精度问题,将SpreadJS的JSON文件导入到GCExcel后,GCExcel使用Excel相关的处理逻辑对这个公式进行了运算和处理,从而造成了这个运算问题。 对于双浮点数误差问题,建议通过 ROUND 函数解决,这也是Excel对于精度误差问题的推荐方案。

7 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-26 11:53:36
来自 6#
您好,-0.3被解析为-0.300000000001可以参考该微软的官方说明文档:https://learn.microsoft.com/zh-c ... c-inaccurate-result

之所以会出现这个问题,主要是是因为双浮点的精度问题,将SpreadJS的JSON文件导入到GCExcel后,GCExcel使用Excel相关的处理逻辑对这个公式进行了运算和处理,从而造成了这个运算问题。

对于双浮点数误差问题,建议通过 ROUND 函数解决,这也是Excel对于精度误差问题的推荐方案。

image.png596724853.png
SpreadJS 17.0.8 | GcExcel 7.1.1 已发布~
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-26 14:08:24
2#
您好,您这边提供一下可以复现这个问题的JSON文件,我们这边复现后调研一下。
SpreadJS 17.0.8 | GcExcel 7.1.1 已发布~
回复 使用道具 举报
yue1859921
注册会员   /  发表于:2023-9-26 14:17:13
3#
Joestar.Xu 发表于 2023-9-26 14:08
您好,您这边提供一下可以复现这个问题的JSON文件,我们这边复现后调研一下。

已上传
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-26 14:58:26
4#
您好,看上去这应该是Excel的精度问题,将-0.3解析为了-0.300000000001,导致第一个表达式返回为FALSE,最终导致结果不正确。

image.png647844237.png

要解决这个问题,可以考虑使用ROUND函数来进行四舍五入。
SpreadJS 17.0.8 | GcExcel 7.1.1 已发布~
回复 使用道具 举报
yue1859921
注册会员   /  发表于:2023-9-26 15:16:41
5#
本帖最后由 yue1859921 于 2023-9-26 15:22 编辑
Joestar.Xu 发表于 2023-9-26 14:58
您好,看上去这应该是Excel的精度问题,将-0.3解析为了-0.300000000001,导致第一个表达式返回为FALSE,最 ...

为什么0.3会解析为解析为了-0.300000000001

M单元格的值本身不是一个无穷小数, 是L5-K5的值    L5和K5 也都是精确的数字     而且单元格都是数值类型,并不是无穷小数计算


第二个问题,spreadjs页面上有精度问题 为什么显示的符合  ,而预览pdf后 却变成了不符合     内容没有保持一致。 这个问题比较严重
回复 使用道具 举报
yue1859921
注册会员   /  发表于:2023-9-26 16:06:50
7#
Joestar.Xu 发表于 2023-9-26 15:46
您好,-0.3被解析为-0.300000000001可以参考该微软的官方说明文档:https://learn.microsoft.com/zh-c ...  ...

原因明白,但是spradjs表格里计算并显示是符合,转pdf后却变成不符合,这个让人很困扰
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-26 17:33:35
8#
本帖最后由 Joestar.Xu 于 2023-10-19 15:00 编辑

您好,这个属于产品之间的差异,从产品的层面上没有更好的方法去避免。

目前解决这个问题只能是使用ROUND函数来抹除双浮点数精度问题造成的影响。
SpreadJS 17.0.8 | GcExcel 7.1.1 已发布~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部