Die Number.parseInt()
Methode liest ein String-Argument ein und gibt eine ganze Zahl im angegebenen Zahlensystem zurück.
Syntax
parseInt(string, radix);
Parameter
string
- Umzuwandelnder Wert. Wenn
string
kein 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 Dezimalsystem welches von uns Menschen verwendet wird. Der Parameter sollte immer angegeben werden, um Verwirrungen bei Lesern auszuschließen und vorhersagbares Verhalten zu garantieren. Verschiedene Implementierungen produzieren verschiedene Ergebnisse wenn dieser Parameter nicht angegeben ist. In der Regel ist 10 der Standardwert
Rückgabewert
Eine ganze Zahl des übergebenen Strings. Wenn das erste Zeichen nicht zu eine 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.
Wenn radix undefined
oder 0 ist (oder fehlt), nimmt JavaScript folgendes an:
- Wenn
string
mit"0x"
oder"0X"
beginnt, wird das Hexadezimalsystem verwendet. - Wenn
string
mit"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 Parameterradix
immer angegeben werden - Wenn
string
mit 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
keine Zahl in jedem Zahlensystem. 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);
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 Oktalergebniss oder ein Dezimalergebniss. 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:
The
parseInt
function produces an integer value dictated by interpretation of the contents of the string argument according to the specified radix. Leading white space in string is ignored. If radix is undefined or0
, it is assumed to be10
except when the number begins with the character pairs0x
or0X
, in which case a radix of 16 is assumed.
Dieses unterscheidet sich von der ECMAScript 3 Spezifikation, welcher Oktalinterpretationen nicht empfielt, 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 zum umwandeln von ganzen Zahlen zu haben. 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 2017 Draft (ECMA-262) Die Definition von 'parseInt' in dieser Spezifikation. |
Entwurf |
Browserkompatibilität
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Ja) | (Ja) | (Ja) | ? | (Ja) |
Parses leading-zero strings as decimal, not octal | (Ja) | 21 | (Ja) (in standards mode) | ? | (Ja) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) |
Parses leading-zero strings as decimal, not octal | ? | ? | 21 | ? | ? | ? |