js大数运算

http://blog.haoji.me/big-int-add-and-minus.html

 

解决方法的思路是以字符串的形式按位来相加,即我们平时计算加法一样,个位与个位相加,超过十就进一位的思路

加法

function add(a, b)
{
	a = a.split('');
	b = b.split('');
	var jinwei = 0, result = [];
	// 这里一定不要忘了加上“ || jinwei”,否则最后面一个进位会被漏掉
	while(a.length || b.length || jinwei)
	{
		var temp = parseInt(a.pop() || 0) + parseInt(b.pop() || 0) + jinwei;
		result.push(temp % 10)
		jinwei = Math.floor(temp / 10);
	}
	return result.reverse().join('');
}

let y=add('1234', '39'); // "1273"
console.log(y)

减法

function add(a, b)
{
	a = a.split('');
	b = b.split('');
	var jinwei = 0, result = [];
	// 这里一定不要忘了加上“ || jinwei”,否则最后面一个进位会被漏掉
	while(a.length || b.length || jinwei)
	{
        let ai=a.pop(),bi=b.pop()
		   var temp = parseInt(ai || 0)-jinwei - parseInt(bi || 0) ;
        if(temp<0){
             temp = parseInt(ai || 0)-jinwei+parseInt(10) - parseInt(bi || 0) ;
            jinwei = 1;
        }else{
            jinwei = 0; 
        }
		result.push(temp)
		
	}
	return result.reverse().join('');
}

let y=add('1234', '39'); // 
console.log(y)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值