Für sehr große oder sehr kleine Zahlen kann wissenschaftliche Notation verwendet werden, um schwimmende Punktwerte darzustellen. Mit wissenschaftlicher Notation kann eine Zahl als Zahl plus E/E dargestellt werden, gefolgt von einem Vielfachen von 10, wie z. B.:
Die Codekopie lautet wie folgt:
var num1 = 3,125e7; // 31250000 var num2 = 3E-17; // 0.0000000000000000000000000000000000003
Um besonders große Zahlen hinzuzufügen oder zu subtrahieren, können Sie String + wissenschaftliche Notationsmethoden verwenden, um die Methode durchzuführen, wie z. B.:
Die Codekopie lautet wie folgt:
// Betrachten Sie nur große ganze Zahlen und betrachten die Dezimalfunktion Stradd (snum1, snum2) {
/*Fügen Sie eine Ziffer hinzu, um den Fall aufzuzeichnen, in dem die höchste Ziffer weiter ist*/
var snum1 = ['0', snum1] .join (''), snum2 = ['0', snum2] .Join ('');
/*Zu kurzen numerischen Zeichenfolgen 0 hinzufügen*//
var len1 = snum1.length, len2 = snum2.Length,
Zeroarr = Funktion (len) {
var arr = new Array (len), i = len;
while (i-) {arr [i] = 0;}
arr zurückgeben;
};
if (len1> len2) {
var arrTemp = Zeroarr (Len1 - Len2);
arrTemp.push (snum2),
snum2 = arrTemp.join ('');
}
sonst wenn (len2> len1) {
var arrTemp = Zeroarr (Len2 - Len1);
arrTemp.push (snum1),
snum1 = arrTemp.join ('');
}
/*Konvertieren Sie Strings in Arrays und fügen Sie sie mit entsprechenden Ziffern hinzu*/
var arr1 = snum1.split (''), arr2 = snum2.Split ('');
var arraddres = new Array (arr1.length), i = arr1.length;
var andone = 0, // ob der untere Teil Addition Cur1, Cur2, Curadd ist;
während (i-) {
cur1 = +arr1 [i], cur2 = +arr2 [i];
Curadd = cur1+cur2+andone;
if (10> Curadd)
arraddres [i] = curadd,
andone = 0;
anders
arraddres [i] = +curadd.toString (). Slice (1,2),
andone = 1;
}
if (! andone) {// schließlich, ob noch einen Schritt weiter gehen soll, ansonsten die vorherigen 0 arraddres.splice (0,1);
}
/*Wenn es die ersten 19 Ziffern im Array gibt, verwenden Sie wissenschaftliche Notation, um das Ergebnis zu repräsentieren*/
var keeplen = 19; // Die Dezimalzahl von JS behält nur die 18 -Ststelligen nach dem Dezimalpunkt var eafter = arraddres.length - 1; // das Mehrfachteil nach e var eBefore, eBeforestr = ''; // der Dezimalteil vor e
if (keeplen <arraddres.length)
EBEFORESTR = [arraddres [0], '.', arraddres.slice (1, keeplen) .join ('')]. join ('');
anders
EBEFORESTR = [arraddres [0], '.', arraddres.slice (1) .Join ('')]. join ('');
EBEFORE = +EBEFORESTR;
return [number (arraddres.join ('')), eBefore, eAfter];
}
Stradd ('1234567890', '9876543210'); // -> [1111111100, 1.11111111, 9]
Der Code ist wie oben, ist er nicht sehr einfach?