Alle Zahlen in JavaScript, ob Ganzzahlen oder Dezimalstellen, sind vom Typ Nummer. Im Rahmen des Programms ist die Essenz des Nummerntyps eine 64-Bit-schwimmende Punktzahl, die mit der schwimmenden Punktzahl des Doppeltyps in Java übereinstimmt. Daher sind alle Zahlen in JavaScript schwimmende Punktzahlen. Nach dem IEEE 754 -Standard (Floating Point Arithmetic Standard) beträgt der Wertebereich, den JavaScript darstellen kann, plus oder minus 1,7976931348623157 Mal 10 bis die Leistung von 308, und die minimale Dezimalzahl, die darstellen kann, plus oder minus, die 5 mal 10 bis zum Power von minus 324 zugänglich sind. Min_Value -Attribut des Zahlenobjekts.
Für Ganzzahlen, gemäß den Anforderungen des ECMascript -Standards (http://ecma262-5.com/els5_html.htm#section_8.5), kann der Bereich der Ganzzahlen, die JavaScript präsentiert und präzise arithmetische Operationen bis hin zu der Leistung von 53 von 53, plus oder minuus 2 darstellen können. Maximalwert +9007199254740992; Für Ganzzahlen, die diesen Bereich überschreiten, kann JavaScript weiterhin Vorgänge ausführen, garantiert jedoch nicht die Genauigkeit der Berechnungsergebnisse. Es ist erwähnenswert, dass JavaScript für Ganzzahlbitoperationen (wie Verschiebung und andere Operationen) nur 32 -Bit -Ganzzahlen unterstützt, dh Ganzzahlen von -2147483648 bis +2147483647.
Experiment
Zeigt den Absolutwert der maximalen Zahl und den absoluten Wert der minimalen Dezimalzahl in JavaScript an:
Die Codekopie lautet wie folgt:
console.log (number.max_value);
console.log (number.min_value);
Die Ergebnisse sind 1.7976931348623157e+308 und 5E-324.
JavaScript kann kein genaues Berechnungsergebnis für Ganzzahlen außerhalb der Leistung von 53 von Plus oder Minus 2 geben:
Die Codekopie lautet wie folgt:
var a = 9007199254740992;
console.log (a+3);
Das korrekte Berechnungsergebnis sollte 9007199254740995 betragen, das durch JavaScript angegebene Berechnungsergebnis ist jedoch 9007199254740996. Nach dem Versuch, die Berechnung der Formel zu ändern, können Sie feststellen, dass so lange, wie das Intöger größer als 9007199254740992, häufig vorkommen. Wenn die Abweichung in der Berechnungsgenauigkeit akzeptabel ist, sind die Folgen des folgenden Beispiels noch schwerwiegender:
Die Codekopie lautet wie folgt:
var max_int = 9007199254740992;
für (var i = max_int; i <max_int +2; ++ i) {
// Infinite Loop
}
Aufgrund von Berechnungsgenauigkeitsproblemen fällt die obige Erklärung in eine tote Schleife.
Für Bit-Operationen unterstützt JavaScript nur 32-Bit-Ganzzahlen:
Die Codekopie lautet wie folgt:
var smallint = 256;
var bigint = 2200000000;
console.log (smallint / 2);
console.log (smallint >> 1);
console.log (bigint / 2);
console.log (Bigint >> 1);
Es ist ersichtlich, dass JavaScript für Ganzzahlen innerhalb von 32 Bit (256) korrekte Bitoperationen ausführen kann und das Ergebnis dem Ergebnis des Abteilungsvorgangs (128) übereinstimmt. Für andere Ganzzahlen als 32 Bit kann JavaScript die korrekten Abteilungsvorgänge (1100000000) ausführen.