欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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;i

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、大整数除法

参考: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();>