首页 > 代码库 > 两大数相乘 -- javascript 实现
两大数相乘 -- javascript 实现
(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)); })();
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。