JS实现两个大数(整数)相乘


Posted in Javascript onApril 28, 2014

大数,即超出语言所能表示的数字最大范围的数字,此时的数字只能用字符串来表示。那么如何实现两个大数相乘呢?我用JS实现了一下,代码如下:

console.log(bigMut("567", "1234")); // 699678 
function bigMut(big, common) { 
big += ""; 
common += ""; 
if (big.length < common.length) { 
big = [common, common = big][0]; 
} 
big = big.split("").reverse(); 
var oneMutManyRes = []; 
var i = 0, 
len = big.length; 
for (; i < len; i++) { 
oneMutManyRes[oneMutManyRes.length] = oneMutMany(big[i], common) + getLenZero(i); 
} 
var result = oneMutManyRes[0]; 
for (i = 1, len = oneMutManyRes.length; i < len; i++) { 
result = bigNumAdd(result, oneMutManyRes[i]); 
} 
return result; 
} 
function getLenZero(len) { 
len += 1; 
var ary = []; 
ary.length = len; 
return ary.join("0"); 
} 
function oneMutMany(one, many) { 
one += ""; 
many += ""; 
if (one.length != 1) { 
one = [many, many = one][0]; 
} 
one = parseInt(one, 10); 
var i = 0, 
len = many.length, 
resAry = [], 
addTo = 0, 
curItem, 
curRes, 
toSave; 
many = many.split("").reverse(); 
for (; i <= len; i++) { 
curItem = parseInt(many[i] || 0, 10); 
curRes = curItem * one + addTo; 
toSave = curRes % 10; 
addTo = (curRes - curRes % 10) / 10; 
resAry.unshift(toSave); 
} 
if (resAry[0] == 0) { 
resAry.splice(0, 1); 
} 
return resAry.join(""); 
} 
function bigNumAdd(big, common) { 
big += ""; 
common += ""; 
var maxLen = Math.max(big.length, common.length), 
bAry = big.split("").reverse(), 
cAry = common.split("").reverse(), 
i = 0, 
addToNext = 0, 
resAry = [], 
fn, 
sn, 
sum; 
for (; i <= maxLen; i++) { 
fn = parseInt(bAry[i] || 0); 
sn = parseInt(cAry[i] || 0); 
sum = fn + sn + addToNext; 
addToNext = (sum - sum % 10) / 10; 
resAry.unshift(sum % 10); 
} 
if (resAry[0] == 0) { 
resAry.splice(0, 1); 
} 
return resAry.join(""); 
}
Javascript 相关文章推荐
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
Jun 26 Javascript
浅谈JavaScript中指针和地址
Jul 26 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
Aug 21 Javascript
js实现一个猜数字游戏
Mar 31 Javascript
简单实现js点击展开二级菜单功能
May 16 Javascript
JQuery 获取多个select标签option的text内容(实例)
Sep 07 jQuery
浅析Vue 和微信小程序的区别、比较
Aug 03 Javascript
详解一个基于react+webpack的多页面应用配置
Jan 21 Javascript
Jquery Datatables的使用详解
Jan 30 jQuery
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
Jun 06 jQuery
js对象属性名驼峰式转下划线的实例代码
Sep 17 Javascript
10分钟学会js处理json的常用方法
Dec 06 Javascript
关于img的href和src取变量及赋值的方法
Apr 28 #Javascript
php和js对数据库图片进行等比缩放示例
Apr 28 #Javascript
JS计算网页停留时间代码
Apr 28 #Javascript
js分页代码分享
Apr 28 #Javascript
jquery使用ajax实现微信自动回复插件
Apr 28 #Javascript
jquery禁用右键示例
Apr 28 #Javascript
jquery实现带二级菜单的导航示例
Apr 28 #Javascript
You might like
zend framework文件上传功能实例代码
2013/12/25 PHP
微信API接口大全
2015/04/15 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
2007/06/29 Javascript
jquery 插件开发方法小结
2009/10/23 Javascript
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
解析javascript 浏览器关闭事件
2013/07/08 Javascript
javascript/jquery获取地址栏url参数的方法
2014/03/05 Javascript
你未必知道的JavaScript和CSS交互的5种方法
2014/04/02 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
2016/01/04 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
各个系统下的Python解释器相关安装方法
2015/10/12 Python
pycharm安装图文教程
2017/05/02 Python
python生成带有表格的图片实例
2019/02/03 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
python实现字符串和数字拼接
2020/03/02 Python
Python内建序列通用操作6种实现方法
2020/03/26 Python
基层干部十八大感言
2014/01/19 职场文书
节水倡议书范文
2014/04/15 职场文书
关于学习的演讲稿
2014/05/10 职场文书
应聘护士求职信
2014/07/21 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
护士实习自荐信
2015/03/06 职场文书
2016中秋节晚会开场白
2015/11/26 职场文书
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL