parseInt()

Die 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 Operation ToString). 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 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 Parameter radix 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 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

Browserkompatibilit├Ąt

BCD tables only load in the browser

Siehe auch