JavaScript/parseInt

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Die globale Funktion parseInt() wandelt eine zu übergebende Zeichenkette in eine Ganzzahl um und gibt diese als Ergebnis zurück. Dies ist sinnvoll, um z. B. Anwendereingaben in Zahlen umzuwandeln, mit denen man anschließend rechnen kann.

Syntax

let ergebnis = parseInt(string, radix);

Gibt NaN (Not a Number) zurück, wenn die Zeichenkette mit Zeichen beginnt, die sich nicht als Teil einer Zahl interpretieren lassen.

Wenn die Zeichenkette „weiter hinten“ ungültige Zeichen enthält, wird der Ausdruck bis zum ersten ungültigen Zeichen als Ganzzahl interpretiert und der interpretierte Teil zurückgegeben. Das gilt bei parseInt() auch für den Punkt.

Anwendungsbeispiel

    const Elemente = ['007', '18', '18.1', '18,9', '-18', '-0018', 'abc', '1a'];
    for (let i = 0; i < Elemente.length; ++i) {
		zeileEinfuegen();
	}

   function zeileEinfuegen () { 
      let tabelle = document.querySelector('tbody');	
      // schreibe Tabellenzeile
	   let Reihe = tabelle.insertRow(0);
       Reihe.insertCell().innerText = Elemente[i];
       Reihe.insertCell().innerText = parseInt(Elemente[i]);
   }
Das Beispiel definiert ein Array mit verschiedenen Elementen, die teils ganze, teils gebrochene, teils gar keine Zahlen darstellen. Dann werden in einer for-Schleife alle Elemente des Arrays mit der insertRow-Methode dynamisch in eine Tabelle eingefügt. Dabei wird die Funktion parseInt() auf das jeweilige Array-Element angewendet und mit insertCell().innerText eingefügt.
  function eingabeVerarbeitung () {
	  let eingabe = document.getElementById('eingabe');
      document.querySelector('output').innerText = parseInt(eingabe.value);
  }
Der zweite Teil des Beispiels realisiert die Möglichkeit einen selbst eingegebenen Wert umzurechnen.

Umrechnung in andere Zahlensysteme

Die Methode parseInt() erlaubt einen zweiten, optionalen Parameter radix. Dieser Parameter enthält die Basis des verwendeten Zahlensystems. Der Aufruf parseInt(string, radix) ermittelt aus dem String, der eine Zahl eines anderen Zahlensystems darstellt, die dazugehörige Dezimalzahl.

Die Methode parseInt() kann damit gleichzeitig als Umrechner von Zahlen anderer Zahlensysteme in das dezimale Zahlensystem verwendet werden. So ergibt z. B. der Aufruf parseInt("11111", 2) die Zahl 31. Der optionale Parameter kann Werte zwischen 2 und 36 annehmen. Mit der Methode toString() des Number-Objektes können Sie umgekehrt Dezimalzahlen in Zeichenketten von Zahlen anderer Zahlensysteme konvertieren. Dabei ist – im Gegensatz zur Methode parseInt() – auch das Umwandeln von Kommazahlen möglich.

Beachten Sie: In früheren Versionen von EcmaScript 3 wurde hier ein unterschiedlicher Wert angenommen:

Wenn die Zeichenkette mit …

  • einem "0x" or "0X" beginnt, war der radix hexadezimal (16)
  • "0" beginnt ist der radix oktal (8) oder dezimal (10)
  • einem anderen Wert beginnt, ist er dezimal (10)
ECMAScript 5 legt dezimal als Standardwert fest. Im strict mode wird der Standardwert auf 10 festgelegt.

Oktalzahlen mit führender Null

Besonders im Bereich der Datumsberechnung werden häufig Zahlen mit führender Null benutzt. Einfache Aufgaben wie alert(08 * 60) liefern dann scheinbar falsche Ergebnisse oder gar Fehlermeldungen.

Des Rätsels Lösung dafür ist, dass JavaScript Zahlen mit führender 0 als Oktalzahlen interpretiert, nicht als Dezimalzahlen. Die Notation von Oktalzahlen mit einer führenden Null ist eine in vielen Programmiersprachen verbreitete Konvention, die ursprünglich von C kommt.

Mit einer Anweisung wie parseInt("08", 10) können Sie das Problem vermeiden und erzwingen, dass der Wert dezimal interpretiert wird.

Empfehlung: Verwenden Sie den strict mode, um die Interpretation als Oktalzahlen auszuschließen.

Siehe auch


Weblinks