首頁  >  文章  >  web前端  >  JavaScript趣題:大整數字串相加

JavaScript趣題:大整數字串相加

黄舟
黄舟原創
2017-01-22 14:49:311990瀏覽

對於兩個大整數字串相加,很多語言提供了原生支援。

例如Java,提供了BigInteger類,而JS這方面是沒有支援的,實作就要靠咋們自己了。

下面這個字串相加函數,接收兩個字串參數,並傳回它們相加之後的結果,也是字串形式。

主要思路還是逐位相加並進位,實現時要考慮的細節還是蠻多的。

function sumStrings(a,b) {  
    //通过补零让a和b对齐  
    //若a比b短,则对a补零  
    while(a.length < b.length){  
        a = "0" + a;  
    }  
    //若b比a短,则对b补零  
    while(b.length < a.length){  
        b = "0" + b;  
    }  
    //是否有进位  
    var addOne = 0;  
    //结果数组  
    var result = [];  
    //从个位开始相加  
    for(var i=a.length-1;i>=0;i--){  
        var c1 = a.charAt(i) - 0;  
        var c2 = b.charAt(i) - 0;  
        var sum = c1 + c2 + addOne;  
        //若数字相加大于9,则进位  
        if(sum > 9){  
            result.unshift(sum - 10);  
            addOne = 1;  
        }  
        else{  
            result.unshift(sum);  
            addOne = 0;  
        }  
    }  
    //应付下面的情况:  
    //"99" + "11" => "110"  
    //它最后仍然要进位  
    if(addOne){  
        result.unshift(addOne);  
    }  
    //应付如下的情况  
    //"01" + "01" => "2"  
    //而不是"02",所以移除第一位的"0"  
    if(!result[0]){  
        result.splice(0,1);  
    }  
    return result.join("");  
}

以上就是 JavaScript趣題:大整數字串相加的內容,更多相關內容請關注PHP中文網(www.php.cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn