Maison  >  Article  >  interface Web  >  JS implémente la multiplication de deux grands nombres (entiers)_compétences javascript

JS implémente la multiplication de deux grands nombres (entiers)_compétences javascript

WBOY
WBOYoriginal
2016-05-16 16:50:552109parcourir

Les grands nombres, c'est-à-dire les nombres qui dépassent la plage maximale de nombres pouvant être représentés par la langue. À l'heure actuelle, les nombres ne peuvent être représentés que par des chaînes. Alors comment multiplier deux grands nombres ? Je l'ai implémenté avec JS, le code est le suivant :

Copier le code Le code est le suivant :

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 résultat = oneMutManyRes[0];
for (i = 1, len = oneMutManyRes.length; i < len; i ) {
result = bigNumAdd(result, oneMutManyRes[i]);
}
retour du résultat
}
function getLenZero(len) {
len = 1; >var ary = [ ];
ary.length = len;
return ary.join("0");
function oneMutMany(un, plusieurs) {
one = " ";
many = "";
if (one.length != 1) {
one = [many, many = one][0];
}
one = parseInt( un, 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;
if ( resAry[0] == 0) {
resAry.splice(0, 1);
}
return resAry.join(""); 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,
somme
pour (; i <= maxLen; i ) {
fn = parseInt(bAry[i] || 0); (cAry[i] || 0);
somme = fn sn addToNext;
addToNext = (somme - somme % 10) / 10;
resAry.unshift(somme % 10);
if ( resAry[0] == 0) {
resAry.splice(0, 1);
}
return resAry.join(""); 🎜>
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn