大数相加,溢出问题

417 阅读1分钟
<script>
    var a = 1111111111111119;
    var b = 9999999999999998;
    //求c,c=a+b
    let stra = a.toString()//将Number类型转化为String
    let strb = b.toString()//将Number类型转化为String
    var JW = 0 //定义变量为零,变量代表进位数值
    var C = '' //定义空的字符串,用于字符串的拼接
    //首先对比那个字符串长,并将两个字符串补为相同长度
    if (stra.length >= strb.length) {
        stra = stra.padStart(stra.length + 1, '0');
        strb = strb.padStart(stra.length, '0');
    } else {
        stra = stra.padStart(strb.length + 1, '0');
        strb = strb.padStart(strb.length, '0');
    }
    //两字符串长度相同,从右向左遍历两个字符串
    for (let i = stra.length - 1; i >= 0; i--) {
        console.log('字符A--->' + stra[i]);
        console.log('字符B--->' + strb[i]);
        //将遍历的的第一位字符转化为Number进行运算
        Numc = Number(stra[i]) + Number(strb[i]) + JW
        //将运算结果除10取整,该整数与下遍历的相加数相加
        var JW = parseInt(Numc / 10)
        //将运算结果除10取余,余数为各位的数值
        var QY = Numc - JW * 10
        console.log('进位' + JW);
        console.log('取余' + QY);

        var C = QY.toString() + C
        console.log('字符C--->' + C);
        console.log('-----------------------------');
    }
</script>