计算两个大数的和,保证精度

86 阅读1分钟
两个非常长的数,以字符串形式表示:

let a = '23982838298082082';
let b = '230208490824809289348208490822112';



function bigNumAdd(a,b){
  let long = '', short = '';
  // 不管哪个长,先调整成自己想要的;
  a.length > b.length ? (long = a, short = b): (long = b, short = a);


  // 都转成数组格式
  let arrL = long.split('');
  let arrS = short.split('');
  // 取长度差
  let distance = long.length - short.length;
  // 设置进一位标识
  let more = 0;
  let result = [];
  // 将短的那个数补齐
  arrS = (new Array(distance).fill(0)).concat(arrS);

  for(let i = long.length - 1; i >= 0; i--){
    let sum = +arrL[i] + +arrS[i] + more;

    if(sum >= 10){
      more = 1;
      let yu = sum % 10;
      result.unshift(String(yu))
    }else{
      more = 0;
      result.unshift(String(sum))
    }
  }

  return result.join('')
}
console.log(bigNumAdd(a,b));