Zahlen
Zahlenformate
In JavaScript gibt es nur das Zahlenformat „number“. Zahlen können mit Dezimalstellen, ohne Dezimalstellen und in Exponentialdarstellung verwendet werden:
HTML-Datei:
Ergebnis:
Beispiel 1
var a1 = 42; =>
var b1 = 1.23456789; =>
var c1 = 123e3; =>
var d1 = 123e-3; =>
Genauigkeit
Zahlen sind in JavaScript nur bis zur 16ten Vorkomma- und Nachkommastelle genau. Danach entstehen Rundungsfehler. Mit der Exponentialdarstellung können zwar größere Zahlen dargestellt werden, die Genauigkeit in den hinteren Stellen wird dabei jedoch umso schlechter, umso größer die Zahl wird:
HTML-Datei:
Ergebnis:
Beispiel 2
var a2 = 1234567890123456; =>
var b2 = 12345678901234567; =>
var c2 = 0.1234567890123456; =>
var d2 = 0.12345678901234567; =>
Bei Gleitkommazahlen kommt es aber auch schon bei kleineren Zahlen zu Ungenauigkeiten, die berücksichtigt werden müssen. Hier sollte z. B. für Vergleiche immer gerundet werden. Wie das Runden in JavaScript genau funktioniert, wird auf der Seite Math-Objekt noch genauer beschrieben:
HTML-Datei:
Ergebnis:
Beispiel 3
c3 = 0.1 + 0.2 =>
(c3 == 0.3) =>
((Math.round(10 * c3) / 10) == 0.3) =>
Not a Number (NaN)
In JavaScript ist „NaN“ eine reservierte Zeichenfolge, für ein fehlerhaftes Zahlenformat. Das entsteht z. b., wenn Zahlen mit Zeichenketten verrechnet werden. Eine Ausnahme ist hier aber das Pluszeichen, bei dem die Zahl wie eine Zeichenkette behandelt und an die Zeichenkette angehängt wird. Eine weiter Ausnahme sind Zeichenketten, die in Zahlen konvertiert werden können, die dann wie Zahlen behandelt werden. Einer Variablen kann auch der Wert „NaN“ zugewiesen werden, wodurch die Variable dann den Typ „number“ (Zahl) hat. Mit der globalen JavaScript-Funktion „isNaN()“ kann eine Variable daraufhin geprüft werden, ob sie eine gültige Zahl ist oder nicht:
HTML-Datei:
Ergebnis:
Beispiel 4
x4 = 10 / "Hallo"; => x4 =
y4 = 10 / "5"; => y4 =
z4 = NaN; => z4 =
typeof(x4) =
isNaN(x4) =
typeof(y4) =
isNaN(y4) =
typeof(z4) =
isNaN(z4) =
Unendlich (infinity)
Werden in JavaScript Zahlen außerhalb des darstellbaren Bereichs erzeugt, bekommen diese den Wert „Infinity“ (unendlich) oder „-Infinity“ (-unendlich). U. a. entsteht der Wert „Infinity“ oder „-Infinity“ bei einer Division durch Null. Variablen mit dem Wert „Infinity“ haben den Typ „number“ (Zahl):
HTML-Datei:
Ergebnis:
Beispiel 5
a5 = 3 / 0 => a5 =
b5 = -3 / 0 => b5 =
c5 = 100e1000 * 100e1000 => c5 =
d5 = 100e1000 * -100e1000 => d5 =
typeof(d5) =
typeof Infinity =
Hexadezimal
In JavaScript werden Zahlen als Hexadezimal interpretiert, wenn ihnen „0x“ vorangestellt wird. Wird eine Hexadezimalzahl ausgegeben, wird sie wieder in eine Dezimalzahl umgerechnet. Mit der Methode „.toString()“ kann eine Zahl auch als Hexadezimal-, Oktal- oder Dualzahl ausgegeben werden:
HTML-Datei:
Ergebnis:
Beispiel 6
a6 = 0x0A => a6 =
b6 = 0xFF => b6 =
c6 = 255 => c6.toString(16) =
c6.toString(8) =
c6.toString(2) =
Abschlussübung
Als Abschlussübung kannst du folgende Webseite erstellen. Errate jeweils das entsprechende Ergebnis, bevor du dir die Lösung anzeigen lässt:
Beispiel 7
x = -10e1000 / 10e-1000 => x =
x = 0.1 + 0.2 * 0.3 => x =
x = 3 / "fünf" => x =
x = 3 / "5" => x =
x = 3 + "5" => x =
Die Lösung kannst du dir hier herunterladen: