找回密码
 立即注册

QQ登录

只需一步,快速开始

excellentman

注册会员

11

主题

27

帖子

106

积分

注册会员

积分
106

微信认证勋章

excellentman
注册会员   /  发表于:2019-9-10 13:11  /   查看:3413  /  回复:5
image.png958669433.png



这个计算得出的结果是7442.175,四舍五入保留两位应该是7442.18,excell中也是7442.18,但是用了spreadjs表单计算后得到的是7442.17,求解

5 个回复

倒序浏览
Fiooona
论坛元老   /  发表于:2019-9-10 14:36:56
沙发
你好,这个问题造成的原因是js语言浮点数精度问题,已提交研发处理,有进展第一时间与您联系。
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
excellentman
注册会员   /  发表于:2019-9-10 14:43:13
板凳
Fiooona 发表于 2019-9-10 14:36
你好,这个问题造成的原因是js语言浮点数精度问题,已提交研发处理,有进展第一时间与您联系。

好的,谢谢
回复 使用道具 举报
excellentman
注册会员   /  发表于:2019-9-10 15:12:07
地板
那这个函数在什么情况下不会有问题呢,我能不能暂时通过什么调整,比如保留位数个数调整什么的来暂时解决一下这个数值错误的问题吗
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2019-9-10 15:35:32
5#
问题编号:sjs-1658
您暂时可以使用自定义函数来实现,自己实现四舍五入的函数,或者使用自定义格式。
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2019-9-25 11:48:28
6#
浮点数精度问题可以使用如下的解决方案:
在返回计算结果的时候降低精度
将一下代码加到引用完spreadjs资源之后即可。


var toPrecisionFn = Number.prototype.toPrecision;
Number.prototype.toPrecision = function (precision) {
    precision = Math.min(11, precision);
    var number = toPrecisionFn.apply(this, arguments);
    return number;
}

var toFixFn = Number.prototype.toFixed;
Number.prototype.toFixed = function(precision){
    precision = Math.min(11,precision);
    return toFixFn.apply(this,arguments);
}
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部