var BigInteger = function ( value ) {
this.value = value;
}
BigInteger.prototype.add = function( b ) {
var value = this.value;
var groupNum;
var appendZero = function ( p , num ) {
var zeroString = "000000000000000";
for (var i = 0; i < num; i++) {
zeroString = zeroString + zeroString;
};
return zeroString.slice( 0 , 15 * num - p.length ) + p;
};
var paddingString = function ( ) {
var length1 = value.length;
var length2 = b.length;
var length = length1 > length2 ? length1 : length2;
groupNum = parseInt(length / 15) + 1;
var addA = appendZero(value , groupNum);
var addB = appendZero(b,groupNum);
return [ addA , addB ];
};
var paddingResult = paddingString();
var doAdd = function ( ) {
var cin = 0;
var i = groupNum;
var resultStr = "";
while( i > 0 ) {
var index1 = 15 * (i - 1);
var index2 = 15 * i;
var num1 = parseInt(paddingResult[ 0 ].slice(index1,index2));
var num2 = parseInt(paddingResult[ 1 ].slice(index1,index2));
var result = String(num1 + num2 + cin);
if (result.length>15) {
cin = 1;
resultStr = result.slice(1) + resultStr;
} else {
cin = 0;
resultStr = ( (resultStr.length == 15)? result : appendZero( result , 1 ) ) + resultStr;
}
i--;
}
if(cin===1)
resultStr = "1" + resultStr;
return resultStr;
};
var resultStr = doAdd();
var delZero = function ( ) {
var i;
for (i = 0; i < resultStr.length; i++) {
if (resultStr[ i ] !== "0" )
break;
};
return resultStr.slice( i );
};
return delZero();
};
//test
var a = new BigInteger("555555555555555555555555555555555555555555555555555");
var result = a.add("555555555555555555555555555555555555555555555555555");
console.log( result );
js 大整数相加
最新推荐文章于 2023-11-16 15:01:57 发布