(function(){ var multiply = function(n1,n2){ var nstr1 = n1.toString(); var nstr2 = n2.toString(); var carry = 0; var ret = ""; var di = 0; var dj = 0; var dig = 0.1; for(var i = nstr1.length - 1 ;i >= 0;i--) { var tmp = ""; var di = parseInt(nstr1[i]); for(var j = nstr2.length - 1;j >= 0;j--) { var dj = parseInt(nstr2[j]); var r = di*dj; if(r > 10) { tmp = r%10; tmp = r % 10 + tmp; carry =(r / 10) | 0; }else{ tmp = r + tmp; } } dig*=10; if(i < nstr1.length -1) { ret = addLarge (ret,tmp * dig); } else{ ret = tmp; } } return ret; } var addLarge = function(n1,n2){ var carry = 0; var ret = ""; n1 += ""; n2 += ""; var len = Math.min(n1.length,n2.length); var sln1 = n1.substr(n1.length - len,n1.length ); var sln2 = n2.substr(n2.length - len,n2.length ); for(var i = len;i > 0; i--) { var di = parseInt(sln1[i-1]); var dj = parseInt(sln2[i-1]); ret = (carry + di + dj)>= 10 ? ((carry + di + dj) - 10 + ret) : ((carry+di+dj) + ret); over = ((carry + di + dj) /10 ) | 0; } if(n1.length != n2.length) { if(n1.length > n2.length){ ret = addLarge(n1.substr(0,n1.length-len),carry.toString()) + ret; } else{ ret = addLarge(n2.substr(0,n2.length - len),carry.toString()) + ret; } return ret; } else{ if(carry> 0) ret = carry+ ret; return ret; } }; console.log(multiply(3214432444354543,432424)); })();
两大数相乘 -- javascript 实现,布布扣,bubuko.com
原文地址:http://blog.csdn.net/csharp25/article/details/27681129