Die parseInt() Methode liest ein String-Argument ein und gibt eine ganze Zahl im angegebenen Zahlensystem zurück.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Syntax
parseInt(string, radix);
Parameter
string- Umzuwandelnder Wert. Wenn
stringkein String ist, wird er zu einem String konvertiert (durch die abstrakte OperationToString). Führende Leerzeichen im String werden ignoriert.
radix- Eine ganze Zahl zwischen 2 und 36, die die Basis eines mathematischen Zahlensystems ist, in der der String geschrieben ist. 10 steht für das gebräuchliche Dezimalsystem.
Rückgabewert
Eine ganze Zahl des übergebenen Strings. Wenn das erste Zeichen nicht zu einer Zahl konvertiert werden kann, wird NaN zurückgegeben.
Beschreibung
Die parseInt Funktion konvertiert das erste Argument zu einem String, analysiert diesen und gibt eine ganze Zahl oder NaN zurück. Wenn nicht NaN zurückgegeben wird, ist der Wert des ersten Arguments eine gültige ganze Zahl im entsprechenden Zahlensystem. Zum Beispiel wird im 10er-Zahlensystem von einer Dezimalzahl ausgegangen, im 8er-System von einer Oktalzahl, im 16er-System von einer Hexadezimalzahl und so weiter. Für die Basis eines Zahlensystems größer als 10 sind Buchstaben des Alphabets Repräsentanten für Zahlen größer als 9. Zum Beispiel werden für Hexadezimalezahlen (Basis 16) die Buchstaben A bis F eingesetzt.
Wenn parseInt ein Zeichen findet, welches keine Ziffer im spezifizierten Zahlensystem ist wird dieses und alle folgenden Zeichen ignoriert. parseInt schneidet Nachkommstellen ab. Führende und nachgestellte Leerzeichen sind erlaubt.
Weil einige Zahlen mit einem e Zeichen in ihrer String-Repräsentation (z. B. 6.022e23), führt der Einsatz von parseInt zum Abschneiden von nummerischer Wert und unerwarteten Ergebnissen, wenn große oder kleine Zahlen verwendet werden. parseInt sollte nicht als Ersatz für Math.floor() eingesetzt werden.
Wenn radix undefined oder 0 ist (oder fehlt), nimmt JavaScript folgendes an:
- Wenn
stringmit"0x"oder"0X"beginnt, wird das Hexadezimalsystem verwendet. - Wenn
stringmit"0"beginnt, wird das Oktal- oder Dezimalsystem verwendet (Implementierungsabhängig). ECMAScript 5 spezifiziert das Dezimalsystem, jedoch unterstützen das nicht alle Browser. Deswegen sollte der Parameterradiximmer angegeben werden - Wenn
stringmit einem anderen Zeichen beginnt, wird das Dezimalsystem verwendet.
Wenn das erste Zeichen nicht zu einer Zahl konvertiert werden kann, gibt parseInt NaN zurück.
Für arithmetische Zwecke ist NaN in keinem Zahlensystem eine Zahl. Man kann die Funktion isNaN() aufrufen, um zu prüfen, ob das Ergebnis von parseInt NaN ist. Wenn NaN in einer arithmetischen Operation eingesetzt wird, ist das Ergebnis auch immer NaN.
Um Zahlen in String-Repräsentationen in verschiedenen Zahlensystemen zu konvertieren nutze folgendes:
intValue.toString(radix).
Beispiele
Einsatz von parseInt
Alle folgenden Beispiele geben 15 zurück:
parseInt(" 0xF", 16);
parseInt(" F", 16);
parseInt("17", 8);
parseInt(021, 8);
parseInt("015", 10);
parseInt(15.99, 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 folgenden Beispiele geben NaN zurück:
parseInt("Hello", 8); // Not a number at all
parseInt("546", 2); // Digits are not valid for binary representations
Alle folgenden Beispiele geben -15 zurück:
parseInt("-F", 16);
parseInt("-0F", 16);
parseInt("-0XF", 16);
parseInt(-15.1, 10);
parseInt(" -17", 8);
parseInt(" -15", 10);
parseInt("-1111", 2);
parseInt("-15e1", 10);
parseInt("-12", 13);
Die folgenden Beispiele geben 4 zurück:
parseInt(4.7, 10); parseInt(4.7 * 1e22, 10); // Sehr große Zahl wird zu 4 parseInt(0.00000000000434, 10); // Sehr kleine Zahl wird zu 4
Das folgende Beispiel gibt 224 zurück:
parseInt("0e0", 16);
Oktal-Interpretationen ohne radix
Obwohl ECMAScript 3 es nicht empfahl und ECMAScript 5 es verbietet, interpretieren viele Implementierungen einen mit "0" beginnende String als Oktalzahl. Das folgende Beispiel hat ein Ergebnis im Oktal- oder Dezimalsystem. Das Zahlensystem sollte immer angegeben werden, um solche Verwirrungen zu vermeiden.
parseInt("0e0"); // 0
parseInt("08"); // 0, '8' ist keine oktale Ziffer.
ECMAScript 5 entfernt oktale Interpretation
Die ECMAScript 5 Spezifikation der parseInt Funktion erlaubt es nicht mehr einen mit 0 beginnenden String als Oktalzahl zu interpretieren. ECMAScript 5 Stand:
Die parseInt Funktion produziert eine ganze Zahl, indem der Inhalt vom string Argument interpretiert wird, abhängig vom in radix angegebenen Zahlensystem. Führende Whitespaces werden ignoriert. Wenn radix undefined oder 0 ist, wird von 10 ausgegangen, außer die Zahl beginnt mit den Zeichen 0x oder 0X, dann wird 16 für radix angenommen.
Das unterscheidet sich von der ECMAScript 3 Spezifikation, welche Oktalinterpretationen nicht empfiehlt, sie aber erlaubt.
Weil viele Implementierungen dieses Verhalten seit 2013 nicht geändert haben und auch ältere Browser unterstützt werden müssen, sollte immer das radix-Argument gesetzt werden.
Eine strenge parse-Funktion
Es ist manchmal nützliche eine strenge Funktion für die Umwandlung von ganzen Zahlen zu verwenden. Reguläre Ausdrücke können helfen:
filterInt = function (value) {
if(/^(\-|\+)?([0-9]+|Infinity)$/.test(value))
return Number(value);
return NaN;
}
console.log(filterInt('421')); // 421
console.log(filterInt('-421')); // -421
console.log(filterInt('+421')); // 421
console.log(filterInt('Infinity')); // Infinity
console.log(filterInt('421e+0')); // NaN
console.log(filterInt('421hop')); // NaN
console.log(filterInt('hop1.61803398875')); // NaN
console.log(filterInt('1.61803398875')); // NaN
Spezifikationen
| Spezifikation | Status | Komment |
|---|---|---|
| ECMAScript 1st Edition (ECMA-262) | Standard | Initiale Definition. |
| ECMAScript 5.1 (ECMA-262) Die Definition von 'parseInt' in dieser Spezifikation. |
Standard | |
| ECMAScript 2015 (6th Edition, ECMA-262) Die Definition von 'parseInt' in dieser Spezifikation. |
Standard | |
| ECMAScript Latest Draft (ECMA-262) Die Definition von 'parseInt' in dieser Spezifikation. |
Entwurf |
Browserkompatibilität
| Desktop | Mobile | Server | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
parseInt | Chrome Vollständige Unterstützung Ja | Edge Vollständige Unterstützung Ja | Firefox Vollständige Unterstützung 1 | IE Vollständige Unterstützung Ja | Opera Vollständige Unterstützung Ja | Safari Vollständige Unterstützung Ja | WebView Android Vollständige Unterstützung Ja | Chrome Android Vollständige Unterstützung Ja | Edge Mobile Vollständige Unterstützung Ja | Firefox Android Vollständige Unterstützung 4 | Opera Android Vollständige Unterstützung Ja | Safari iOS Vollständige Unterstützung Ja | Samsung Internet Android Vollständige Unterstützung Ja | nodejs Vollständige Unterstützung Ja |
| Parses leading-zero strings are decimal, not octal | Chrome Vollständige Unterstützung 23 | Edge Vollständige Unterstützung Ja | Firefox Vollständige Unterstützung 21 | IE Vollständige Unterstützung 9 | Opera Vollständige Unterstützung Ja | Safari Vollständige Unterstützung 6 | WebView Android Vollständige Unterstützung 4.4 | Chrome Android Vollständige Unterstützung Ja | Edge Mobile Vollständige Unterstützung Ja | Firefox Android Vollständige Unterstützung 21 | Opera Android Vollständige Unterstützung Ja | Safari iOS Vollständige Unterstützung 6 | Samsung Internet Android Vollständige Unterstützung Ja | nodejs Vollständige Unterstützung Ja |
Legende
- Vollständige Unterstützung
- Vollständige Unterstützung