JavaScript の楽しい質問: 大きな整数文字列の追加

黄舟
リリース: 2017-01-22 14:49:31
オリジナル
1989 人が閲覧しました

多くの言語は、2 つの大きな整数文字列を追加するためのネイティブ サポートを提供します。

たとえば、Java は BigInteger クラスを提供しますが、JS はこの側面をサポートしていないため、実装するには自分自身に依存する必要があります。

次の文字列加算関数は 2 つの文字列パラメータを受け取り、加算後の結果を文字列形式で返します。

主なアイデアは、少しずつ追加して実行することです。実装する際に考慮すべき詳細はまだたくさんあります。

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 中国語 Web サイト (www.php.cn) に注目してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!