林秀栋的技术博客

大数加法

实现两个字符串型数字的加法运算,返回字符串型数字的和。不能使用 parseInt、Number 等类型转换

// sum('1233', '233') => '1466'

let a = "1233";
let b = "233";

function sum(a, b) {
  let maxLen = Math.max(a.length, b.length);
  a = a.padStart(maxLen, 0); // '1233'
  b = b.padStart(maxLen, 0); // '0233'

  let t = 0;
  let f = 0;
  let sum = "";
  for (let i = maxLen - 1; i >= 0; i--) {
    t = parseInt(a[i]) + parseInt(b[i]) + f;
    f = Math.floor(t / 10);
    sum = (t % 10) + sum;
  }
  if (f == 1) {
    sum = "1" + sum;
  }
  return sum;
}