大数加减.js

var add =function (a, b) {
    var carry = 0;
    var result = [];
    var len = Math.max(a.length, b.length);
    var i = len;
    while (i--) {
        var sum = (+a[i - len + a.length] || 0) + (+b[i - len + b.length] || 0) + carry;
        carry = parseInt(sum / 10);
        result.unshift(sum % 10);
    }
    if (carry) result.unshift(carry);
    return result.join('');
};

  
var subtract = function(a, b){ 
    var ltrimZero = function(str){
        var i = 0;
        while(i=0;i--){  
        var c1 = a.charAt(i) - 0;  
        var c2 = b.charAt(i) - 0;  
        //如果当前位数无须借位  
        if(c1 - minusOne >= c2){  
            result.unshift(c1 - c2 - minusOne);  
            minusOne = 0;  
        }  
        else{  
            result.unshift(c1 + 10 - c2 - minusOne);  
            minusOne = 1;  
        }  
    }  
    //如果最高位仍然要借位  
    //比如:"99999" - "100000"  
    if(minusOne){  
        //=> -(100000 - 99999) => -1  
        var newResult = subtract(b, a);  
        newResult = ltrimZero(newResult);  
        return "-" + newResult;         
    }  
    result = result.join("");  
    result = ltrimZero(result);  
    return result ? result : "0";  
};

var result = subtract('5554433','11223347777');
console.log(result);

你可能感兴趣的:(大数加减.js)