两大数相乘 -- javascript 实现
Posted jzssuanfa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两大数相乘 -- javascript 实现相关的知识,希望对你有一定的参考价值。
(function (){ var addLarge = function(n1,n2){ var carry = 0; var ret = ""; n1=n1.toString(); n2=n2.toString(); 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); carry = ((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.toString(); } }; 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 = ""; 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 + carry; if(r >= 10) { carry =(r / 10) | 0; tmp = (r%10) + tmp; }else{ carry=0; tmp = r + tmp; } } if(carry > 0){ tmp = carry.toString() + tmp; carry = 0; } if(i < nstr1.length -1) { ret = addLarge (ret ,tmp + dig); } else{ ret = tmp; } dig += "0"; } return ret; }; var a = "1543843275857859592482498432243255"; var b = "1554335546546546662"; console.log(multiply(a,b)); console.log(parseInt(a)*parseInt(b)); })();
以上是关于两大数相乘 -- javascript 实现的主要内容,如果未能解决你的问题,请参考以下文章