JavaScript中多位数相加处理方法

本文探讨了在JavaScript中处理多位数相加的方法,包括一种基本的解决方案,该方案通过在较短的数字前补0使其长度相等,然后逐位相加并处理进位。另一种更简洁的解决方案则避免了补0步骤,直接通过相加和进位操作完成计算。两种方法都涉及到字符串处理和进位逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多位数相加 ##1 我的解决方案

1.本来想自己写的,不过在网上找了一篇,跟自己写的差不多,就拿来用了;
2.第二种方法,比较的巧妙,进位用了true。在运行的过程中true会当做1来使用。
3.基本的解法就是,单独对每个数进行相加,然后用字符串保存,最后在拼接;
4.自己再写个多个多位数相加

function sumMultString(arg,arg1,arg2,……){   
    if(arguments.length>=2){
        for(var i=0;i<arguments.length;i++){            
            arguments[i+1] = arguments[i+1]==undefined?arguments[i]:sumStrings(arguments[i],arguments[i+1]);            
        }
        return arguments[i];
    }
}
function sumStrings(a,b) {
  var result = [], count = 0;

  if(a.length < b.length)  b=[a, a=b][0];
  b=Array(a.length-b.length+1).join('0')+b;

  var arrA = a.split('');
  var arrB = b.split('');
  for(var j=0; j<a.length; j++) {
    var temp = (Number(arrA.pop()) + Number(arrB.pop())) +count;
    temp>=10?[temp,count]=[temp-10,1]:count=0;
    result.push(temp);
  }
  result.push(count);

  return result.reverse().join('').replace(/^0+/,'');
}

实现分两步:

1 为输入中较小的一个数前端补0,使得两个数一样长。在那之前为了确定给哪个数补0首先进行了一次比较。

2 将两个数的最后一位依次pop出,进行相加,并存储到result数组中。如果相加的结果大于10,取个位数部分,并使得进位符号count+1。简单来说就像小学时学加法那样,按部就班就对了。

最后得到result数组,还不是我们要的结果,我们需要对它反转,然后转换成字符串,还有去除最前面的0.

2 其他人的解决方案

function sumStrings(a,b){
    var res='', c=0;
    a = a.split('');
    b = b.split('');
    while (a.length || b.length || c){
        c += ~~a.pop() + ~~b.pop();
        res = c % 10 + res;
        c = c>9;
    }
    return res.replace(/^0+/,'');
}

一看之下简洁了不止一点点……
改进的地方在于:

  1. 没有上面提到的第一步,不用补0,不用判断哪个数大,如此一来清楚了不少。

  2. 没有使用count变量代表进位,直接将相加结果和进位变量记录在了一个变量c里,

  3. 使用 ~~a 而不是Number(a)来进行格式转换。(~表示取反操作)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值