大数相加 js实现

function largeNumAdd(a = "", b = "") {
    // 数字左侧补 0
    let maxLen = Math.max(a.length, b.length);
    b = b.padStart(maxLen, '0'); //123->123
    a = a.padStart(maxLen, '0'); //  1->001

    // 结果字符串
    let res = '';
    // 相加进位保存
    let carry = 0;
    // 从右到左 个位开始依次相加
    for (let i = maxLen - 1; i >= 0; i--) {
        let add = parseInt(a[i] || 0) + parseInt(b[i] || 0) + carry;
        carry = add > 10 ? 1 : 0;
        res = `${add%10}${res}`;
    }
    // 最高位相加是否有进位
    if (carry == 1) {
        res = `${carry}${res}`;
    }
    return res;
}

console.log(largeNumAdd("12311125611111999", "999"));
posted @ 2022-02-01 23:03  qfluck  阅读(113)  评论(0)    收藏  举报