非常に大きなまたは非常に少ない数の場合、科学表記法を使用して、浮動小数点値を表すことができます。科学表記法を使用すると、数字とe/eの数字として表現でき、次に次のような10の倍数を表すことができます。
コードコピーは次のとおりです。
var num1 = 3.125e7; // 31250000 var num2 = 3e-17; // 0.0000000000000000000000000000000000003
特に多数を追加または減算するには、弦 +科学表記法を使用して、次のような方法を実行できます。
コードコピーは次のとおりです。
//大断片のみを考慮し、小数関数にストラッドを考慮しないでください(snum1、snum2){
/*桁を追加して、最高の数字がさらにあるケースを記録します*/
var snum1 = ['0'、snum1] .join( '')、snum2 = ['0'、snum2] .join( '');
/*短い数値文字列に0を追加*/
var len1 = snum1.length、len2 = snum2.length、
zeroarr = function(len){
var arr = new Array(len)、i = len;
while(i-){arr [i] = 0;}
arrを返します。
};
if(len1> len2){
var arrtemp = zeroarr(len1 -len2);
arrtemp.push(snum2)、
snum2 = arrtemp.join( '');
}
else if(len2> len1){
var arrtemp = zeroarr(len2 -len1);
arrtemp.push(snum1)、
snum1 = arrtemp.join( '');
}
/*文字列を配列に変換し、対応する数字で追加します*/
var arr1 = snum1.split( '')、arr2 = snum2.split( '');
var arraddres = new array(arr1.length)、i = arr1.length;
var andone = 0、//下部部分添加がcur1、cur2、curaddであるかどうか。
while(i-){
cur1 = +arr1 [i]、cur2 = +arr2 [i];
curadd = cur1+cur2+andone;
if(10> curadd)
arraddres [i] = curadd、
andone = 0;
それ以外
arraddres [i] = +curadd.tostring()。スライス(1,2)、
andone = 1;
}
if(!andone){//最後に、さらに一歩進むかどうか、それ以外の場合は以前の0 arraddres.splice(0,1)を傍受します。
}
/*配列に最初の19桁がある場合は、科学表記を使用して結果を表す*/
var Keeplen = 19; // JSの小数は、小数点以降の18桁のみを保持しますvar eafter = arraddres.length -1; // e var ebeforeの後の複数の部分、ebeforestr = ''; // eの前の小数部
if(keeplen <arraddres.length)
ebeforestr = [arraddres [0]、 '。'、arraddres.slice(1、keeplen).join( '')]。join( '');
それ以外
ebeforestr = [arraddres [0]、 '。'、arraddres.slice(1).join( '')]。join( '');
ebefore = +ebeforestr;
return [number(arraddres.join( ''))、ebefore、eafter];
}
Stradd( '1234567890'、 '9876543210'); //-> [1111111100、1.11111111、9]
コードは上記のとおりですが、とても簡単ではありませんか?