js大整数加法、乘法、除法解析
程序员文章站
2022-08-20 12:40:44
js 大整数加法、乘法、除法
有一定的经验的人都知道,当我们对数据操作的时候,若数据过大,计算机将这个大数从十进制的转为二进制的,是没有那个类型的放的了的,因此,我们经常将一个大数转化为字符串来操作...
js 大整数加法、乘法、除法
有一定的经验的人都知道,当我们对数据操作的时候,若数据过大,计算机将这个大数从十进制的转为二进制的,是没有那个类型的放的了的,因此,我们经常将一个大数转化为字符串来操作。接下来我将演示大整数的加法、乘法、除法操作。附:不考虑负数
1、大整数加法
思路:我们将两个数进行逆序转换,然后按位进行相加,将相加的结果进行与10相除,商为进位,余数为当前位要保留的数。
//大整数加法 function big_add(a,b){ var min_str=a.length=b.lengtha.split("").reverse():b.split("").reverse(); var quotient=0,remainder=0; var resutl=[]; var temp=0; for(var i=0;i2、大整数乘法
//大数乘法 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、大整数除法
参考:https://www.cnblogs.com/fightformylife/p/4022058.html
//利用"模n取余法"模拟手动除法 //a/b a>b function big_p(a,b){ var alen=a.length,blen=b.length; var quotient=0,remainder=0; var result=[],temp=0 ; for(var i=0;i;i++){>("").reverse():b.split("").reverse();>