大きな数値、つまり言語で表現できる数値の最大範囲を超える数値。現時点では、数値は文字列でのみ表現できます。では、2 つの大きな数を掛けるにはどうすればよいでしょうか? JS で実装しました。コードは次のとおりです:
console.log(bigMut("567", "1234")); // 699678
関数 bigMut(big, common) {
big = ""; 🎜>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 result = bigNumAdd(result, oneMutManyRes[i]);
return result;
}
function getLenZero(len) {
len = 1; >var ary = [ ];
ary.length = len;
return ary.join("0");
関数 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 * 1 つの addTo;
toSave = curRes % 10) / 10;
resAry.unshift(toSave);
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,
for (; i fn = parseInt(bAry[i] || 0); (cAry[i] || 0);
sum = fn sn addToNext = (sum - sum % 10) / 10;
if ( resAry[0] == 0) {
resAry.splice(0, 1);
}
return resAry.join(""); 🎜>