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 相关文章推荐
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
Mar 27 Javascript
JavaScript中判断整字类型最简洁的实现方法
Nov 08 Javascript
node.js中的fs.appendFile方法使用说明
Dec 17 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
Oct 06 Javascript
JS实现来回出现文字的状态栏特效代码
Oct 31 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
Jun 13 Javascript
第十篇BootStrap轮播插件使用详解
Jun 21 Javascript
Vue声明式渲染详解
May 17 Javascript
详解微信第三方小程序代开发
Jun 23 Javascript
在react中使用vuex的示例代码
Jul 30 Javascript
uniapp微信小程序实现一个页面多个倒计时
Nov 01 Javascript
Vue3中toRef与toRefs的区别
Mar 24 Vue.js
关于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
用PHP写的MySQL数据库用户认证系统代码
2007/03/22 PHP
PHP setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
2015/05/12 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
zend framework重定向方法小结
2016/05/28 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
JavaScript 继承详解(一)
2009/07/13 Javascript
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
jQuery实现页面滚动时智能浮动定位
2017/01/08 Javascript
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
详解jQuery获取特殊属性的值以及设置内容
2018/11/14 jQuery
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
[02:09]2018DOTA2亚洲邀请赛TNC赛前采访
2018/04/04 DOTA
python实现的一个火车票转让信息采集器
2014/07/09 Python
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
CSS3模拟动画下拉菜单效果
2017/04/12 HTML / CSS
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
What's the difference between deep copy and shallow copy? (深拷贝与浅拷贝有什么区别)
2015/11/10 面试题
移动通信专业自荐信范文
2013/11/12 职场文书
护理专业毕业生自荐信范文
2014/01/05 职场文书
高一新生军训感言
2014/03/02 职场文书
2014年纪检部工作总结
2014/11/12 职场文书
社区服务活动报告
2015/02/05 职场文书
python编写五子棋游戏
2021/05/25 Python
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python