首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用列加法来添加具有无限位数的数字?

如何使用列加法来添加具有无限位数的数字?
EN

Stack Overflow用户
提问于 2016-03-25 03:58:05
回答 3查看 406关注 0票数 1

我试图用javascript中的列加法来开发加法程序,例如: 53,22,我们从正确的3+2和5+2中添加数字,最终得到75,主要的问题是,我试图开发一个程序,它可以实现大numbers.so的加法,在添加大数时,我不会像1.26E+9那样胡言乱语。我试着通过定义下面的代码来完成它

代码语言:javascript
复制
function add(a,b)
{

    return (Number(a) + Number(b)).toString();
}
console.log(add('58685486858601586', '8695758685'));

我试图得到加法的数字,而不像5.8685496e+16那样胡言乱语。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-25 08:52:20

你可以把它们按数字加起来。

代码语言:javascript
复制
function sumStrings(a, b) {                                    // sum for any length
    function carry(value, index) {                             // cash & carry
        if (!value) {                                          // no value no fun
            return;                                            // leave shop
        }
        this[index] = (this[index] || 0) + value;              // add value
        if (this[index] > 9) {                                 // carry necessary?
            carry.bind(this)(this[index] / 10 | 0, index + 1); // better know this & go on
            this[index] %= 10;                                 // remind me later
        }
    }

    var array1 = a.split('').map(Number).reverse(),            // split stuff and reverse
        array2 = b.split('').map(Number).reverse();            // here as well

    array1.forEach(carry, array2);                             // loop baby, shop every item
    return array2.reverse().join('');                          // return right ordered sum
}

document.write(sumStrings('58685486858601586', '8695758685') + '<br>');
document.write(sumStrings('999', '9') + '<br>');
document.write(sumStrings('9', '999') + '<br>');
document.write(sumStrings('1', '9999999999999999999999999999999999999999999999999999') + '<br>');

票数 1
EN

Stack Overflow用户

发布于 2016-03-25 04:26:54

在所有计算完成之前,我会把所有的值都保留为数字。准备好显示时,只需以任何您想要的方式格式化数字。例如,您可以使用toLocaleString

票数 1
EN

Stack Overflow用户

发布于 2016-03-25 04:40:13

这个有几个库

一个好的经验法则是,在实际开始创建自己的库专有实现之前,确保您为库做了研究。找到了三个不同的库来解决您的问题

示例

这是如何使用所有三个库,BigNumber来自bignumber.js库,Decimal来自decimal.js,Big big.js

代码语言:javascript
复制
var bn1 = new BigNumber('58685486858601586');
var bn2 = new BigNumber('8695758685');
console.log(bn1.plus(bn2).toString());

bn1 = new Decimal('58685486858601586');
bn2 = new Decimal('8695758685');
console.log(bn1.plus(bn2).toString());


bn1 = new Big('58685486858601586');
bn2 = new Big('8695758685');
console.log(bn1.plus(bn2).toString());

控制台的输出是:

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

https://stackoverflow.com/questions/36213774

复制
相关文章

相似问题

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