javascript
javascript乘法和加法_js 大整数加法、乘法、除法
有一定的編程經驗的人都知道,當我們對數據操作的時候,若數據過大,計算機將這個大數從十進制的轉為二進制的,是沒有那個類型的放的了的,因此,我們經常將一個大數轉化為字符串來操作。接下來我將演示大整數的加法、乘法、除法操作。
附:不考慮負數
1、大整數加法
思路:我們將兩個數進行逆序轉換,然后按位進行相加,將相加的結果進行與10相除,商為進位,余數為當前位要保留的數。
//大整數加法
function big_add(a,b){
var min_str=a.length
var max_str=a.length>=b.length?a.split("").reverse():b.split("").reverse();
var quotient=0,remainder=0;
var resutl=[];
var temp=0;
for(var i=0;i
temp=parseInt(min_str[i])+parseInt(max_str[i])+quotient;
quotient=parseInt(temp/10);//進位
remainder=temp%10;//余數
resutl.push(remainder);
}
for(i;i
temp=parseInt(max_str[i])+quotient;
quotient=temp/10;//進位
remainder=temp%10;//余數
resutl.push(remainder);
if(temp<10&&i
return max_str.slice(i+1).reverse().join("")+resutl.slice().reverse().join("");
}
}
return resutl.reverse().join("");
}
2、大整數乘法
//大數乘法
function multi(a,b){
var str1,str2,len1,len2,maxlen,result = [];
str1 = a.split("").reverse();
str2 = b.split("").reverse();
len1 = str1.length;
len2 = str2.length;
//因為要在下一步做累加,如果不初始化為0,result[]中的值會變為NaN
//因為未初始化的數組中的值為undefined
for(var i = 0;i < len1;i++)
for(var j = 0;j < len2;j++)
result[i + j] = 0;
for(var i = 0;i < len1;i++)
for(var j = 0;j < len2;j++)
//根據乘法的手動計算方式,在上下相同位上會有相加
result[i + j] += parseInt(str1[i]) * parseInt(str2[j]);
var n = result.length;
for(var k = 0;k < n-1;k++)
{
var temp = result[k];
if(temp >= 10)
{
result[k] = temp % 10;
//JS中的"/"不是除法取整,會取得小數,所以要用Math.floor()
result[k + 1] += parseInt(temp / 10);
}
}
return result.reverse().join("");
}
3、大整數除法
//利用"模n取余法"模擬手動除法
//a/b a>b
function big_div(a,b){
var alen=a.length,blen=b.length;
var quotient=0,remainder=0;
var result=[],temp=0 ;
for(var i=0;i
temp=remainder*10+parseInt(a[i]);
if(temp
remainder=temp;
result.push(0);
}else{
quotient=parseInt(temp/b);
remainder=temp%b;
result.push(quotient);
}
}
return [result.join("").replace(/\b(0+)/gi,""),remainder];//結果返回[商,余數]
}
總結
以上是生活随笔為你收集整理的javascript乘法和加法_js 大整数加法、乘法、除法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大B公司自己做AI,都是九死一生——To
- 下一篇: 究极日月服务器维护时间,超激斗梦境9月2