큰 숫자, 즉 언어로 표현할 수 있는 숫자의 최대 범위를 초과하는 숫자입니다. 이때 숫자는 문자열로만 표현할 수 있습니다. 그렇다면 두 개의 큰 숫자를 곱하는 방법은 무엇입니까? JS로 구현했는데 코드는 다음과 같습니다.
console.log(bigMut("567", "1234")); // 699678
function 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.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]);
}
결과 반환
}
function getLenZero(len) {
len
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( 하나, 10)
var i = 0,
len = Many.length,
resAry = [],
addTo = 0,
curItem,
curRes,
toSave;
Many = Many.split("").reverse();
for (; i <= len; i ) {
curItem = parsInt(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,
sum;
for (; i <= maxLen; i ) {
fn =parseInt(bAry[i] || 0); (cAry[i] || 0);
sum = fn sn addToNext;
addToNext = (sum - sum % 10) /
resAry.unshift(sum % 10);
if ( resAry[0] == 0) {
resAry.splice(0, 1);
}
return resAry.join(""); 🎜>