找回密码
 立即注册

QQ登录

只需一步,快速开始

大Vi

中级会员

140

主题

309

帖子

975

积分

中级会员

积分
975
大Vi
中级会员   /  发表于:2022-9-20 16:57  /   查看:1158  /  回复:6
1金币
image.png904498596.png image.png341399840.png
为什么公式算的这样,这个也有精度问题吗?
  1. sheet.setFormula(11, 2, `=C4-C9`)
复制代码


最佳答案

查看完整内容

SpreadJS是一款纯前端表格控件,在浏览器上运行,所以有时候会出现JavaScript的一些问题。 javaScript有精度问题,如1楼中回复,在浏览器控制台中输入 会发现不是28.3 所以SpreadJS这里有一套解决方案。 还是如1楼所说,可以设置精度。 此时打印值,已经是28.3 不再是28.299999

6 个回复

倒序浏览
最佳答案
最佳答案
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-9-20 16:57:06
来自 5#
SpreadJS是一款纯前端表格控件,在浏览器上运行,所以有时候会出现JavaScript的一些问题。
javaScript有精度问题,如1楼中回复,在浏览器控制台中输入
image.png979938964.png 会发现不是28.3

所以SpreadJS这里有一套解决方案。
还是如1楼所说,可以设置精度。
  1.         GC.Spread.CalcEngine.Functions.CALC_PRECISION = 13
  2.         spread.resumeCalcService()
  3.         console.log(sheet.getValue(2,0))
复制代码
此时打印值,已经是28.3 不再是28.299999
image.png753013610.png
回复 使用道具 举报
有点东西悬赏达人认证
初级会员   /  发表于:2022-9-20 17:45:13
2#
js的精度问题,可以通过下面的代码解决
GC.Spread.CalcEngine.Functions.CALC_PRECISION = 13

image.png728601989.png


回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-9-20 18:24:53
3#
可以参考楼上回复
回复 使用道具 举报
大Vi
中级会员   /  发表于:2022-9-20 18:48:33
4#
有点东西 发表于 2022-9-20 17:45
js的精度问题,可以通过下面的代码解决
GC.Spread.CalcEngine.Functions.CALC_PRECISION = 13

这不一样算出很多小数吗?这里明明应该是两个小数啊
回复 使用道具 举报
大Vi
中级会员   /  发表于:2022-9-22 09:34:45
6#
Ellia.Duan 发表于 2022-9-21 15:22
SpreadJS是一款纯前端表格控件,在浏览器上运行,所以有时候会出现JavaScript的一些问题。
javaScript有精 ...

请问这个13代表什么意思?还有我试了下,在spread上计算确实变成了28.3,但是我导出excel,在excel里面看见还是有很多位小数的,这个属性没办法控制到excel吗?excel本身计算精度也有问题吗?
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-9-22 11:22:30
7#
您问的第一个问题,可以参考这篇文章
https://gcdn.grapecity.com.cn/showtopic-49430-1-590.html
第二个问题,这边导出到excel还是28.3。
image.png449378966.png
image.png101724852.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部