大数求和

178 阅读1分钟

求和 333333333333333333333333 + 99999999999999999999999999

let a = '333333333333333333333333';
let b = '99999999999999999999999999';

function sum(num1,num2){
      //十位结果
      let s = 0;
      //个位结果
      let m = 0;
      //num1数字
      let n1 = 0;
      //num2数字
      let n2 = 0;
      //和
      let t = '';
      判断num1和num2大小,处理位数(补全等长并加1预留进位)
      if (num1.length>num2.length) {
        num2 = num2.padStart(num1.length+1,'0')
        num1 = num1.padStart(num1.length+1,'0')
      }else{
        num1 = num1.padStart(num2.length+1,'0')
        num2 = num2.padStart(num2.length+1,'0')
      }
      //遍历字符串并同位相加
      for (let i = num1.length-1; i >= 0; i--) {
        //num1数字并加上进位
        n1 = parseInt(num1[i])+s
        //num2数字
        n2 = parseInt(num2[i])
        //相加取个位
        m = parseInt((n1+n2)%10)
        //相加取十位
        s = parseInt((n1+n2)/10)
        //结果加入字符串
        t=m+t;
      }
      //判断首位是否为0
      if (t.startsWith(0)) {
        //截取
        t=t.slice(1)
      }
      return t;
    }
    console.log(sum(a,b));