Start · Sprachen · JavaScript · Referenz · parseInt()

parseInt()

Funktion

Die Funktion <code>parseInt()</code> parst ein String-Argument und gibt eine Ganzzahl der angegebenen Basis (radix) zurück.

seit JavaScript ES1 Kategorie: core

Signatur

parseInt(string) / parseInt(string, radix)

Beschreibung

Die Funktion parseInt() parst ein String-Argument und gibt eine Ganzzahl der angegebenen radix (der Basis in mathematischen Zahlensystemen) zurück.

Die Funktion parseInt konvertiert ihr erstes Argument in einen String, parst diesen String und gibt dann eine Ganzzahl oder NaN zurück.

Wenn der Rückgabewert nicht NaN ist, entspricht er der Ganzzahl, die das erste Argument als Zahl in der angegebenen radix interpretiert. (Beispielsweise konvertiert eine radix von 10 von einer Dezimalzahl, 8 von oktal, 16 von hexadezimal usw.)

Das Argument radix wird in eine Zahl konvertiert. Wenn es nicht angegeben wird oder wenn der Wert 0, NaN oder Infinity wird (undefined wird zu NaN gecastet), nimmt JavaScript Folgendes an:

  1. Wenn der Eingabe-string, nach Entfernen führender Whitespaces und möglicher +/--Zeichen, mit 0x oder 0X beginnt (eine Null, gefolgt von einem kleinen oder großen X), wird radix als 16 angenommen und der Rest des Strings als Hexadezimalzahl geparst.
  2. Wenn der Eingabe-string mit einem anderen Wert beginnt, ist die Basis 10 (dezimal).

Wenn die Basis 16 ist, erlaubt parseInt(), dass der String optional mit 0x oder 0X nach dem optionalen Vorzeichen (+/-) beginnt.

Wenn der Basiswert (bei Bedarf gecastet) nicht im Bereich [2, 36] (inklusiv) liegt, gibt parseInt NaN zurück.

Für Basen über 10 zeigen Buchstaben des englischen Alphabets Ziffern größer als 9 an. Beispielsweise werden für hexadezimale Zahlen (Basis 16) A bis F verwendet. Die Buchstaben sind case-insensitive.

parseInt versteht genau zwei Vorzeichen: + für positiv und - für negativ. Dies erfolgt als erster Schritt beim Parsen nach dem Entfernen von Whitespace. Wenn keine Vorzeichen gefunden werden, geht der Algorithmus zum nächsten Schritt über; andernfalls entfernt er das Vorzeichen und führt das Zahlen-Parsen auf dem Rest des Strings aus.

Wenn parseInt im Eingabe-String ein Zeichen antrifft, das keine gültige Ziffer in der angegebenen radix ist, ignoriert es dieses und alle nachfolgenden Zeichen und gibt den bis zu diesem Punkt geparsten Ganzzahlwert zurück. Beispielsweise gibt parseInt("2", 2) NaN zurück, weil 2 keine gültige Ziffer im binären Zahlensystem ist. Auch wenn 1e3 technisch eine Ganzzahl kodiert (und von parseFloat() korrekt zur Ganzzahl 1000 geparst wird), gibt parseInt("1e3", 10) 1 zurück, weil e keine gültige Ziffer zur Basis 10 ist. Da . ebenfalls keine Ziffer ist, wird der Rückgabewert immer eine Ganzzahl sein.

Wenn das erste Zeichen nicht mit der verwendeten Basis in eine Zahl umgewandelt werden kann, gibt parseInt NaN zurück. Führender Whitespace ist erlaubt.

Für arithmetische Zwecke ist der NaN-Wert in keiner Basis eine Zahl. Sie können die Funktion Number.isNaN aufrufen, um zu bestimmen, ob das Ergebnis von parseInt NaN ist. Wenn NaN an arithmetische Operationen übergeben wird, ist das Ergebnis der Operation ebenfalls NaN.

Da große Zahlen das Zeichen e in ihrer String-Darstellung verwenden (z. B. 6.022e23 für 6,022 × 1023), führt die Verwendung von parseInt zum Abschneiden von Zahlen bei sehr großen oder sehr kleinen Zahlen zu unerwarteten Ergebnissen. parseInt sollte nicht als Ersatz für Math.trunc() verwendet werden.

Um eine Zahl in ihre String-Darstellung in einer bestimmten Basis zu konvertieren, verwenden Sie thatNumber.toString(radix).

Da parseInt() eine Zahl zurückgibt, kann sie an Präzisionsverlust leiden, wenn die durch den String repräsentierte Ganzzahl außerhalb des sicheren Bereichs liegt. Die Funktion BigInt() unterstützt das genaue Parsen von Ganzzahlen beliebiger Länge, indem sie ein BigInt zurückgibt.

Parameter

Name Typ Default Beschreibung
$string Pflicht string Ein String, der mit einer Ganzzahl beginnt. Führender Whitespace in diesem Argument wird ignoriert.
$radix number Eine Ganzzahl zwischen 2 und 36, die die radix (die Basis in mathematischen Zahlensystemen) des string repräsentiert. Sie wird in eine 32-Bit-Ganzzahl konvertiert; wenn sie nach der Konvertierung ungleich null und außerhalb des Bereichs [2, 36] liegt, gibt die Funktion immer NaN zurück. Wenn 0 oder nicht angegeben, wird die Basis basierend auf dem Wert von string abgeleitet. Vorsicht — dies ist nicht immer standardmäßig 10!

Rückgabewert

Typ
number
Beschreibung
Eine aus dem gegebenen string geparste Ganzzahl oder NaN, wenn die radix als 32-Bit-Ganzzahl kleiner als 2 oder größer als 36 ist, oder das erste Nicht-Whitespace-Zeichen nicht in eine Zahl konvertiert werden kann.

Beispiele

parseInt() verwenden

parseInt("0xF", 16);
parseInt("F", 16);
parseInt("17", 8);
parseInt("015", 10);
parseInt("15,123", 10);
parseInt("FXX123", 16);
parseInt("1111", 2);
parseInt("15 * 3", 10);
parseInt("15e2", 10);
parseInt("15px", 10);
parseInt("12", 13);
Alle geben 15 zurück

Beispiele, die NaN zurückgeben

parseInt("Hello", 8); // Not a number at all
parseInt("546", 2); // Digits other than 0 or 1 are invalid for binary radix

Beispiele, die -15 zurückgeben

parseInt("-F", 16);
parseInt("-0F", 16);
parseInt("-0XF", 16);
parseInt("-17", 8);
parseInt("-15", 10);
parseInt("-1111", 2);
parseInt("-15e1", 10);
parseInt("-12", 13);

Beispiel, das 224 zurückgibt

parseInt("0e0", 16);

BigInt-Werte werden nicht unterstützt

parseInt("900719925474099267n");
// 900719925474099300
900719925474099300

Stattdessen BigInt() verwenden

BigInt("900719925474099267");
// 900719925474099267n
900719925474099267n

Funktioniert nicht mit numerischen Separatoren

parseInt("123_456"); // 123
123

parseInt() mit Nicht-Strings

parseInt(null, 36); // 1112745: The string "null" is 1112745 in base 36
parseInt(undefined, 36); // 86464843759093: The string "undefined" is 86464843759093 in base 36

Bei kleinen Zahlen funktioniert es

parseInt(15.99, 10); // 15
parseInt(-15.1, 10); // -15

Bei großen und kleinen Zahlen unerwartete Ergebnisse

parseInt(4.7 * 1e22, 10); // Very large number becomes 4
parseInt(0.00000000000434, 10); // Very small number becomes 4

parseInt(0.0000001, 10); // 1
parseInt(0.000000123, 10); // 1
parseInt(1e-7, 10); // 1
parseInt(1000000000000000000000, 10); // 1
parseInt(123000000000000000000000, 10); // 1
parseInt(1e21, 10); // 1

Interaktives Beispiel

console.log(parseInt("123"));
// 123 (default base-10)
console.log(parseInt("123", 10));
// 123 (explicitly specify base-10)
console.log(parseInt("   123 "));
// 123 (whitespace is ignored)
console.log(parseInt("077"));
// 77 (leading zeros are ignored)
console.log(parseInt("1.9"));
// 1 (decimal part is truncated)
console.log(parseInt("ff", 16));
// 255 (lower-case hexadecimal)
console.log(parseInt("0xFF", 16));
// 255 (upper-case hexadecimal with "0x" prefix)
console.log(parseInt("xyz"));
// NaN (input can't be converted to an integer)

// Wichtig · Fallstricke

JavaScript hat auf Sprachebene keine Unterscheidung zwischen „Fließkommazahlen" und „Ganzzahlen". parseInt() und parseFloat() unterscheiden sich nur in ihrem Parsing-Verhalten, aber nicht notwendigerweise in ihren Rückgabewerten. Beispielsweise geben parseInt("42") und parseFloat("42") denselben Wert zurück: eine Number 42. Andere Präfixe wie 0b, die in Zahlenliteralen gültig sind, werden von parseInt() als normale Ziffern behandelt. parseInt() behandelt Strings, die mit einer 0 beginnen, auch nicht als Oktalwerte. Das einzige Präfix, das parseInt() erkennt, ist 0x oder 0X für Hexadezimalwerte — alles andere wird als Dezimalwert geparst, wenn radix fehlt. Stattdessen können Number() oder BigInt() verwendet werden, um diese Präfixe zu parsen.