Add BIG numbers functionally
by Mohammed Ismail Ansari
JavaScript
function addBigNumbers(number1, number2) {
function addLastDigit(number1, number2, seed, carry) {
var number1LSD = number1 ? parseInt(number1.substr(number1.length-1, 1)) : 0,
number2LSD = number2 ? parseInt(number2.substr(number2.length-1, 1)) : 0,
result = getSum(number1LSD, number2LSD, carry),
newCarry = getCarry(number1LSD, number2LSD, carry);
return !number1 && !number2 ?
(carry || "") :
addLastDigit(number1.substr(0, number1.length-1),
number2.substr(0, number2.length-1),
result,
newCarry) + result;
}
function getSum(a, b, c) {
var d = (a + b + c).toString();
return (d.length > 1) ? d[1] : d;
}
function getCarry(a, b, c) {
var d = (a + b + c).toString();
return (d.length > 1) ? parseInt(d[0]) : 0;
}
return addLastDigit(number1, number2, "", 0);
}
var number1 = "909";
number2 = "400";
var bigresult = addBigNumbers(number1, number2);
alert(number1 + " + " + number2 + " = " + bigresult);