Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
Number
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
Number-Werte stellen Gleitkommazahlen dar wie37 oder-9.25.
DerNumber-Konstruktor enthält Konstanten und Methoden zum Arbeiten mit Zahlen. Werte anderer Typen können mit derNumber()-Funktion in Zahlen umgewandelt werden.
In diesem Artikel
Beschreibung
Zahlen werden am häufigsten in literalen Formen wie255 oder3.14159 ausgedrückt. Dielexikalische Grammatik enthält eine detailliertere Referenz.
255; // two-hundred and fifty-five255.0; // same number255 === 255.0; // true255 === 0xff; // true (hexadecimal notation)255 === 0b11111111; // true (binary notation)255 === 0.255e3; // true (decimal exponential notation)Ein Zahlenliteral wie37 im JavaScript-Code ist ein Gleitkommawert, kein ganzzahliger Wert. Es gibt keinen separaten Ganzzahltyp in der allgemeinen Verwendung. (JavaScript hat auch einenBigInt-Typ, aber er ist nicht dazu gedacht, Number im täglichen Gebrauch zu ersetzen.37 ist immer noch eine Zahl, kein BigInt.)
WirdNumber(value) als Funktion verwendet, wandelt sie einen String oder anderen Wert in den Zahlentyp um. Wenn der Wert nicht umgewandelt werden kann, gibt sieNaN zurück.
Number("123"); // returns the number 123Number("123") === 123; // trueNumber("unicorn"); // NaNNumber(undefined); // NaNNumber-Codierung
Der JavaScript-Number-Typ ist eindoppelter 64-Bit-Binärformat IEEE 754 Wert, ähnlich wiedouble in Java oder C#. Das bedeutet, dass er Bruchwerte darstellen kann, aber es gibt einige Einschränkungen hinsichtlich der Größe und Präzision der gespeicherten Zahl. Kurz gesagt, eine IEEE 754-Gleitkommazahl mit doppelter Präzision verwendet 64 Bits, um 3 Teile darzustellen:
- 1 Bit für dasVorzeichen (positiv oder negativ)
- 11 Bits für denExponenten (-1022 bis 1023)
- 52 Bits für dieMantisse (darstellung eines Wertes zwischen 0 und 1)
Die Mantisse (auchSignifikand genannt) ist der Teil der Zahl, der den tatsächlichen Wert (signifikante Ziffern) darstellt. Der Exponent ist die Potenz von 2, mit der die Mantisse multipliziert werden soll. Diese Darstellung ist vergleichbar mit der wissenschaftlichen Notation:
Die Mantisse wird mit 52 Bits gespeichert und als Ziffern nach1.… in einer binären Bruchzahl interpretiert. Daher beträgt die Genauigkeit der Mantisse 2-52 (erhältlich überNumber.EPSILON), oder etwa 15 bis 17 Dezimalstellen; Rechnungen über diesem Genauigkeitsgrad unterliegen demRunden.
Der größte Wert, den eine Zahl halten kann, ist 21023 × (2 - 2-52) (mit dem Exponenten 1023 und der Mantisse 0.1111… in Basis 2), der überNumber.MAX_VALUE verfügbar ist. Werte höher als das werden durch die spezielle ZahlenkonstanteInfinity ersetzt.
Ganze Zahlen können nur im Bereich von -253 + 1 bis 253 - 1 ohne Genauigkeitsverlust dargestellt werden (erhältlich überNumber.MIN_SAFE_INTEGER undNumber.MAX_SAFE_INTEGER), da die Mantisse nur 53 Bits halten kann (einschließlich der führenden 1).
Weitere Details dazu sind imECMAScript-Standard beschrieben.
Number-Konvertierung
Viele eingebaute Operationen, die Zahlen erwarten, wandeln ihre Argumente zuerst in Zahlen um (was größtenteils der Grund dafür ist, dassNumber Objekte sich ähnlich wie Zahlen-Primitiva verhalten).Die Operation kann wie folgt zusammengefasst werden:
- Zahlen werden unverändert übernommen.
undefinedwird zuNaN.nullwird zu0.truewird zu1;falsewird zu0.- Strings werden umgewandelt, indem sie so geparst werden, als ob sie einZahlenliteral enthalten. Ein Parse-Fehlschlag führt zu
NaN. Es gibt einige kleine Unterschiede im Vergleich zu einem tatsächlichen Zahlenliteral:- Führende und nachfolgende Leerzeichen/Zeilenenden werden ignoriert.
- Eine führende
0-Ziffer führt nicht dazu, dass eine Zahl zu einem oktalen Literal wird (oder im strengen Modus abgelehnt wird). +und-sind am Anfang des Strings erlaubt, um dessen Vorzeichen anzuzeigen (Im tatsächlichen Code "sehen sie aus" als wären sie Teil des Literals, sind aber tatsächlich separate Unär-Operatoren). Das Vorzeichen kann jedoch nur einmal erscheinen und darf nicht von Leerzeichen gefolgt werden.Infinityund-Infinitywerden als Literale erkannt. Im tatsächlichen Code sind sie globale Variablen.- Leere oder nur aus Leerzeichen bestehende Strings werden zu
0konvertiert. - Numerische Trennzeichen sind nicht erlaubt.
- BigInts werfen einen
TypeError, um zu verhindern, dass unbeabsichtigt implizite Konvertierung zum Verlust der Genauigkeit führt. - Symbole werfen einen
TypeError. - Objekte werden zuerstin ein primitives Objekt umgewandelt, indem deren
[Symbol.toPrimitive]()(mit"number"als Hinweis),valueOf(), undtoString()-Methoden in dieser Reihenfolge aufgerufen werden. Das resultierende primitive Objekt wird dann in eine Zahl umgewandelt.
Es gibt zwei Möglichkeiten, fast den gleichen Effekt in JavaScript zu erzielen.
- Unäre Plus:
+xführt genau die oben erläuterten Konvertierungsschritte durch, umxzu konvertieren. - Die
Number()Funktion:Number(x)verwendet den gleichen Algorithmus, umxzu konvertieren, außer dassBigInts nicht einenTypeErrorwerfen, sondern ihren Zahlenwert zurückgeben, mit möglichem Genauigkeitsverlust.
Number.parseFloat() undNumber.parseInt() sind ähnlich wieNumber(), aber konvertieren nur Strings und haben leicht unterschiedliche Parsing-Regeln. Zum Beispiel erkenntparseInt() den Dezimalpunkt nicht, undparseFloat() erkennt das0x-Präfix nicht.
Ganzzahlkonvertierung
Einige Operationen erwarten Ganzzahlen, insbesondere solche, die mit Array/String-Indizes, Datums-/Zeitkomponenten und Zahlenradixen arbeiten. Nachdem die oben genannten Konvertierungsschritte durchgeführt wurden, wird das Ergebnis zu einer Ganzzahlgekürzt (indem der Bruchteil verworfen wird). Wenn die Zahl ±Infinity ist, wird sie unverändert zurückgegeben. Wenn die ZahlNaN oder-0 ist, wird0 zurückgegeben. Das Ergebnis ist daher immer eine Ganzzahl (die nicht-0 ist) oder ±Infinity.
Bemerkenswert ist, dass bei der Umwandlung in Ganzzahlen sowohlundefined als auchnull zu0 werden, weilundefined zuNaN konvertiert wird, was ebenfalls zu0 wird.
Festbreiten-Zahlenkonvertierung
JavaScript verfügt über einige niedere Funktionen, die sich mit der binären Codierung von Ganzzahlen beschäftigen, insbesonderebitweise Operatoren undTypedArray-Objekte. Bitweise Operatoren wandeln die Operanden immer in 32-Bit-Ganzzahlen um. In diesen Fällen, nachdem der Wert in eine Zahl umgewandelt wurde, wird die Zahl dann auf die gegebene Breite normalisiert, indem zuerst der Bruchteilabgeschnitten wird und dann die niedrigsten Bits in der Zweierkomplementkodierung der Ganzzahl genommen werden.
new Int32Array([1.1, 1.9, -1.1, -1.9]); // Int32Array(4) [ 1, 1, -1, -1 ]new Int8Array([257, -257]); // Int8Array(2) [ 1, -1 ]// 257 = 0001 0000 0001// = 0000 0001 (mod 2^8)// = 1// -257 = 1110 1111 1111// = 1111 1111 (mod 2^8)// = -1 (as signed integer)new Uint8Array([257, -257]); // Uint8Array(2) [ 1, 255 ]// -257 = 1110 1111 1111// = 1111 1111 (mod 2^8)// = 255 (as unsigned integer)Konstruktor
Number()Erstellt
Number-Objekte. Wenn sie als Funktion aufgerufen wird, gibt sie primitive Werte vom Typ Number zurück.
Statische Eigenschaften
Number.EPSILONDas kleinste Intervall zwischen zwei darstellbaren Zahlen.
Number.MAX_SAFE_INTEGERDie maximale sichere Ganzzahl in JavaScript (253 - 1).
Number.MAX_VALUEDie größte positive darstellbare Zahl.
Number.MIN_SAFE_INTEGERDie minimale sichere Ganzzahl in JavaScript (-(253 - 1)).
Number.MIN_VALUEDie kleinste positive darstellbare Zahl, d.h. die positive Zahl, die am nächsten bei Null liegt (ohne tatsächlich Null zu sein).
Number.NaNSpezieller Wert für "Not a Number".
Number.NEGATIVE_INFINITYSpezieller Wert, der negative Unendlichkeit darstellt. Wird bei Überlauf zurückgegeben.
Number.POSITIVE_INFINITYSpezieller Wert, der Unendlichkeit darstellt. Wird bei Überlauf zurückgegeben.
Statische Methoden
Number.isFinite()Bestimmt, ob der übergebene Wert eine endliche Zahl ist.
Number.isInteger()Bestimmt, ob der übergebene Wert eine Ganzzahl ist.
Number.isNaN()Bestimmt, ob der übergebene Wert
NaNist.Number.isSafeInteger()Bestimmt, ob der übergebene Wert eine sichere Ganzzahl ist (eine Zahl zwischen -(253 - 1) und 253 - 1).
Number.parseFloat()Dies entspricht der globalen
parseFloat()-Funktion.Number.parseInt()Dies entspricht der globalen
parseInt()-Funktion.
Instanzeigenschaften
Diese Eigenschaften sind aufNumber.prototype definiert und werden von allenNumber-Instanzen geteilt.
Number.prototype.constructorDie Konstruktorfunktion, die das Instanzobjekt erstellt hat. Bei
Number-Instanzen ist der initiale Wert derNumber-Konstruktor.
Instanzmethoden
Number.prototype.toExponential()Gibt einen String zurück, der die Zahl in Exponentialdarstellung repräsentiert.
Number.prototype.toFixed()Gibt einen String zurück, der die Zahl in Festkommadarstellung repräsentiert.
Number.prototype.toLocaleString()Gibt einen String mit einer sprachensensitiven Darstellung dieser Zahl zurück. Überschreibt die
Object.prototype.toLocaleString()-Methode.Number.prototype.toPrecision()Gibt einen String zurück, der die Zahl mit einer festgelegten Genauigkeit in Festkomma- oder Exponentialdarstellung repräsentiert.
Number.prototype.toString()Gibt einen String zurück, der das angegebene Objekt in der angegebenenRadix ("Basis") darstellt. Überschreibt die
Object.prototype.toString()-Methode.Number.prototype.valueOf()Gibt den primitiven Wert des angegebenen Objekts zurück. Überschreibt die
Object.prototype.valueOf()-Methode.
Beispiele
>Verwendung des Number-Objekts zur Zuweisung von Werten zu numerischen Variablen
Das folgende Beispiel verwendet die Eigenschaften desNumber-Objekts, um Werte zu mehreren numerischen Variablen zuzuweisen:
const biggestNum = Number.MAX_VALUE;const smallestNum = Number.MIN_VALUE;const infiniteNum = Number.POSITIVE_INFINITY;const negInfiniteNum = Number.NEGATIVE_INFINITY;const notANum = Number.NaN;Ganzzahlbereich für Number
Das folgende Beispiel zeigt die minimalen und maximalen Ganzzahlwerte, die alsNumber-Objekt dargestellt werden können.
const biggestInt = Number.MAX_SAFE_INTEGER; // (2**53 - 1) => 9007199254740991const smallestInt = Number.MIN_SAFE_INTEGER; // -(2**53 - 1) => -9007199254740991Beim Parsen von Daten, die in JSON serialisiert wurden, ist zu erwarten, dass Ganzzahlen, die außerhalb dieses Bereichs liegen, beschädigt werden, wenn der JSON-Parser sie in denNumber-Typ zwingt.
Ein möglicher Workaround ist die Verwendung vonString.
Größere Zahlen können mit demBigInt-Typ dargestellt werden.
Verwendung von Number() zur Umwandlung eines Date-Objekts
Das folgende Beispiel wandelt dasDate-Objekt in einen numerischen Wert um, indemNumber als Funktion verwendet wird:
const d = new Date("1995-12-17T03:24:00");console.log(Number(d));Dies protokolliert819199440000.
Umwandlung numerischer Strings und null zu Zahlen
Number("123"); // 123Number("123") === 123; // trueNumber("12.3"); // 12.3Number("12.00"); // 12Number("123e-1"); // 12.3Number(""); // 0Number(null); // 0Number("0x11"); // 17Number("0b11"); // 3Number("0o11"); // 9Number("foo"); // NaNNumber("100a"); // NaNNumber("-Infinity"); // -InfinitySpezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-number-objects> |