首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JavaScript中不存在舍入问题,是否有可能实现任意精度的算法?

在JavaScript中不存在舍入问题,是否有可能实现任意精度的算法?
EN

Stack Overflow用户
提问于 2015-01-31 05:55:47
回答 1查看 403关注 0票数 3

我已经尝试过big.js、bignumber.js和decimal.js;它们在一定程度上都能很好地工作,但是当我需要用足够多的“奇数”位数进行任意精确的计算时(我当前的测试用例是31435517643980 * (1 / 31435517643980) === 1),它们都不能胜任。我对任何允许我处理这样的表达式的解决方案都是开放的,包括对外部API的调用。我目前正在查看Wolfram的API,但是2000调用/月限制是我想要避免的限制,因为我的应用程序将进行相当多的调用。

如果这是一个错误的SE网站,请让我知道和/或移动它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-31 06:34:29

最常见的方法可能是把这两个数字乘以同一个乘法器,使它们没有小数,然后再做运算,然后再除以。下面是一个粗略的实现:

代码语言:javascript
复制
function getDigits(n){
    return n.toString().substring(n.toString().indexOf('.')+1).length;
}
function xNums(n1,n2){
    var highRes=(n1*Math.pow(10,getDigits(n1))*(n2*Math.pow(10,getDigits(n2))));
    return highRes/Math.pow(10,getDigits(n1))/Math.pow(10,getDigits(n2));
}

然后运行xNums(31435517643980,(1 / 31435517643980))===1。在Chrome里为我工作

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28248683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档