您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
三六零分类信息网 > 阜阳分类信息网,免费分类信息发布

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

2025/7/18 21:47:30发布5次查看
大数,即超出语言所能表示的数字最大范围的数字,此时的数字只能用字符串来表示。那么如何实现两个大数相乘呢?我用js实现了一下,代码如下:
复制代码 代码如下:
console.log(bigmut(567, 1234)); // 699678
function bigmut(big, common) {
big += ;
common += ;
if (big.length big = [common, common = big][0];
}
big = big.split().reverse();
var onemutmanyres = [];
var i = 0,
len = big.length;
for (; i onemutmanyres[onemutmanyres.length] = onemutmany(big[i], common) + getlenzero(i);
}
var result = onemutmanyres[0];
for (i = 1, len = onemutmanyres.length; 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 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 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();
}
阜阳分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product