Maison  >  Article  >  interface Web  >  Question JavaScript amusante : ajout de grandes chaînes entières

Question JavaScript amusante : ajout de grandes chaînes entières

黄舟
黄舟original
2017-01-22 14:49:312047parcourir

De nombreuses langues offrent une prise en charge native de l'ajout de deux grandes chaînes entières.

Par exemple, Java fournit la classe BigInteger, mais JS ne prend pas en charge cet aspect, nous devons donc compter sur nous-mêmes pour l'implémenter.

La fonction d'addition de chaîne suivante reçoit deux paramètres de chaîne et renvoie le résultat après leur addition, qui est également sous forme de chaîne.

L'idée principale est d'ajouter petit à petit et de reporter. Il reste encore pas mal de détails à prendre en compte lors de la mise en œuvre.

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("");  
}

Ce qui précède est la question JavaScript intéressante : ajouter de grandes chaînes entières. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn