大数的javascript实现

大数的javascript实现
对于非常大或非常小的数字,浮点值可以用科学记数法来表示。通过科学记数法,一个数可以表示为一个数加上e e e,然后乘以10倍,如:

复制代码代码如下所示:

VaR num1 = 3.125e7 VAR num2 = 31250000; / / / / 0 3e-17;
特殊大数的加减法可以用字符串+科学记数法进行,如:

复制代码代码如下所示:

/ /大整数这里只考虑的情况下,不考虑小数功能stradd(snum1,snum2){

一个数字/ *记录高的情况下。

无功snum1 = { 0,snum1 }。加入(),snum2 = { 0,snum2 }加入();

给出一串简短的数字 0。

snum1.length VaR len1 =,= snum2.length len2个,

zeroarr =功能(LEN){

var arr =新的数组(LEN),我= Len;

而(我){ ARR {我} = 0;}

报酬;

};

如果(len1 > len2个){

无功arrtemp = zeroarr(len1 - len2个);

ArrTemp.push(snum2),

snum2 = arrtemp.join(' ');

}

如果(len2个> len1){

无功arrtemp = zeroarr(len2个- len1);

ArrTemp.push(snum1),

snum1 = arrtemp.join(' ');

}

将被转换为字符串数组,并添加相应的数字。

VaR arr1 = snum1.split(''),arr2 = snum2.split('');

无功arraddres =新的数组(arr1。长度),我= arr1.length;

VaR和= 0, / /低和是否为cur1,研究,curadd;

当(i){

cur1 = + arr1 {我},{我} arr2研究= +;

curadd = cur1 +研究+一;

如果(10 > curadd)

我arraddres { } = curadd,

一个= 0;

其他的

我arraddres { } = + curadd.tostring()片(1,2),

一个= 1;

}

(如果!Andone){ / /最后一个,否则在0 arraddres.splice前拦截(0,1);

}

*前19位,如果有一个截取数组,用科学记数法来表达这个结果。

无功keeplen = 19; / / JS小数只有18位无功eafter = arraddres.length小数1; / / E倍数ebefore VaR背后,ebeforestr = ''; / / E在小数部分的前

如果(keeplen < arraddres。长度)

ebeforestr = { arraddres { 0 },arraddres.slice ',(1,keeplen)。加入()和()};

其他的

ebeforestr = { arraddres { 0 },arraddres.slice(1)。加入()和()};

ebefore = + ebeforestr;

返回{数(arraddres.join(')),ebefore,eafter };

}

StrAdd('1234567890 ','9876543210 '); / / -> { 11111111 00,1.1111111,9 }
代码和上面的一样,也很简单吗。

tag:大数电脑软件Javascript

相关内容