>  기사  >  웹 프론트엔드  >  재미있는 JavaScript 질문: 큰 정수 문자열 추가하기

재미있는 JavaScript 질문: 큰 정수 문자열 추가하기

黄舟
黄舟원래의
2017-01-22 14:49:312045검색

많은 언어가 두 개의 큰 정수 문자열을 추가하는 기본 지원을 제공합니다.

예를 들어 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으로 문의하세요.