<返回更多

JS大额数字相加

2023-04-11  今日头条  剁椒鱼鳞
加入收藏

接受两个字符串,如果接受的是数字,需要将数字转为字符串,但有一个点需要注意,转换过程中,可能会带有e,如1.12e+21,即1.12 * 21个0,需要将1.12 * 2个0,然后padStart(21 - 2个0)。

let a = "9007199254740991";
let b = "1234567899999999999";
function add(a ,b){
    //取两个数字的最大长度   
    let maxLength = Math.max(a.length, b.length);
    //用0去补齐长度   
    a = a.padStart(maxLength , 0);//"0009007199254740991"   
    b = b.padStart(maxLength , 0);//"1234567899999999999"   
    //定义加法过程中需要用到的变量         
    let t = 0;
    let f = 0;   //"进位"   
    let sum = "";
    for(let i=maxLength-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;
}
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>