Zahlen und Mathematik
Zahlen sind in JavaScript vom Typ Number
. Um mit Zahlen zu arbeiten^, gibt es verschiedene Operatoren,
welche in der untenstehenden Tabelle aufgelistet sind. Die Tabelle enthält ebenfalls die verfügbaren Kurzschreibweisen
und deren Bedeutung.
Name | Formel | Formel (kurz) | Formel (schrittweise) | ||||||
---|---|---|---|---|---|---|---|---|---|
Addition | x = y + z | x += y | ≙ | x = x + y | x++ | ≙ | x += 1 | ≙ | x = x + 1 |
Subtraktion | x = y - z | x -= y | ≙ | x = x - y | x-- | ≙ | x -= 1 | ≙ | x = x - 1 |
Multiplikation | x = y * z | x *= y | ≙ | x = x * y | - | ||||
Division | x = y / z | x /= y | ≙ | x = x / y | - | ||||
Modulo | x = y % z | x %= y | ≙ | x = x % y | - |
Wichtig: An Stelle von x++
und x--
können wir auch ++x
und --x
notieren. Der Unterschied besteht darin, dass bei x++
und x--
der „alte Wert“ zurückgegeben wird.
Bei ++x
und --x
wird die sogenannte Inkrementierung bzw. Dekrementierung ausgeführt, bevor die
Variable den Wert zurückgibt. Hierzu folgendes Beispiel:
var x = 10; alert(x++); // Gibt 10 aus alert(x); // Gibt 11 aus
var x = 10; alert(++x); // Gibt 11 aus alert(x); // Gibt 11 aus
Konvertierung
Um Zeichenketten in Zahlen umzuwandeln, gibt es die Funktionen parseInt()
und parseFloat()
.
Die Funktion parseInt()
wandelt dabei die Zeichenkette in eine Dezimalzahl um, parseFloat()
hingegen
in eine Gleitkommazahl (mit Nachkommastellen). Werden zwei Zeichenketten mit dem +
-Operator verknüpft, so wird keine
Addition ausgeführt, sondern die Zeichenketten werden aneinandergehängt (verbunden / verknüpft). Diese Regelung gilt auch bei
Verwendung von einer Zeichenkette und einer Zahl: So ergibt "12" + 3
nicht etwa 15
, sondern "123"
.
Kann die Zeichenkette nicht umgewandelt werden, so geben die Konvertierungsfunktionen den Wert NaN
zurück. Um zu
überprüfen, ob eine Zahl den Wert NaN
besitzt, gibt es die Funktion isNaN()
, welche als Parameter den
Wert erwartet und als Rückgabe einen Wert vom Typ Boolean
zurückgibt.
var zahlTextA = "12"; var zahlTextB = "3"; var zahlA = parseInt(zahlTextA); var zahlB = parseInt(zahlTextB); document.write(zahlTextA + zahlTextB); document.write("<br />"); document.write(zahlA + zahlB);
Übrigens: Optional kann der parseInt()
-Funktion ein zweiter Parameter übergeben werden, in welchem der
Exponent angegeben wird, d. h. mit der Anweisung parseInt("00100110", 2)
wird die Zeichenkette als Binärzahl
interpretiert und wir erhalten den Dezimalwert 38
zurück. Standardmäßig wird für den Exponent 10
verwendet.
Wichtig: Mit der Funktion Number()
ist es ebenfalls möglich, eine Konvertierung durchzuführen, jedoch muss hierbei
beachtet werden, dass die Funktion Number()
immer Gleitkommazahlen erzeugt, falls in der Zeichenkette Nachkommastellen
vorhanden sind. Des Weiteren ist die Funktion parseInt()
„weniger empfindlich“ als Number()
, was die
Konvertierung angeht: So gibt parseInt("123a")
die Zahl 123
zurück, wohingegen Number("123a")
als Wert NaN
zurückgibt. Die Funktion Number()
wird jedoch auch gerne dazu verwendet, eine Zahl in ein
Number
-Objekt umzuwandeln, um z. B. eine Funktion wie toFixed()
aufzurufen, ohne davor die Zahl einer
Variablen zuzuweisen.
Minimum und Maximum
Um den minimalen Wert oder maximalen Wert von zwei oder mehreren Werten festzustellen, gibt es die Funktion min()
und
max()
des statischen Math
-Objekts. Um die Funktion aufzurufen, benötigen wir also wieder den Punktoperator:
z. B. Math.min()
. Als Parameter können zwei oder mehrere Zahlen übergeben. Kann einer der Zahlen nicht konvertiert werden,
so wird NaN
zurückgegeben.
document.write("Minimum: ") document.write(Math.min(12, 32, 8, 50, 83, 29, 30, 100, 46, 23, 7, 132, 57, 92, 20)); document.write("<br />"); document.write("Maximum: ") document.write(Math.max(12, 32, 8, 50, 83, 29, 30, 100, 46, 23, 7, 132, 57, 92, 20));
Übrigens: Um den Minimal- oder Maximalwert aus einem Array zu bestimmen, rufen wir die Funktion apply()
mit Referenz
auf die Funktion Math.min()
auf. Dies sieht dann z. B. so aus: Math.min.apply(meinArray)
. Die apply()
-Funktion
kann auch für andere Funktionen angewendet werden. Die apply()
-Funktion übergibt dabei die Werte des Arrays der referenzierten
Funktion wie wenn es einzelne Werte wären.
Runden
Um Gleitkommazahlen auf Dezimalzahlen zu runden, gibt es in JavaScript drei Funktionen, die dem Math
-Objekt angehören:
floor()
, ceil()
und round()
. floor()
rundet auf die nächstkleinere Zahl ab,
ceil()
dagegen rundet auf die nächstgrößere Zahl auf. Die Rundung von round()
erfolgt nach dem
kaufmännischen Prinzip: 2,3
wird zu 2
, 2,7
zu 3
. Hier gilt zu beachten, dass z. B.
2,49
auf 2
abgerundet wird. Die Rundung erfolgt also nicht von der letzten Nachkommastelle zur ersten, sondern
als ganze Zahl.
var zahl = 12.57; document.write("Abrunden: ") document.write(Math.floor(zahl)); document.write("<br />"); document.write("Aufrunden: ") document.write(Math.ceil(zahl)); document.write("<br />"); document.write("Kaufmännisches Runden: ") document.write(Math.round(zahl));
Zufallszahlen
In JavaScript lassen sich mit der Funktion random()
des Math
-Objekts Zufallszahlen generieren. Bei den generierten
Zahlen handelt es sich um Gleitkommazahlen zwischen 0 und 1. Dabei kann 1 als generierte Zahl nie auftreten.
for (var i = 0; i < 10; i++) { document.write(Math.random().toFixed(4)); document.write("<br />"); }
Übrigens: Die Funktion toFixed()
kann dazu genutzt werden, eine Gleitkommazahl nur mit einer bestimmten Anzahl
an Nachkommastellen darzustellen. toFixed()
kann bei allen nummerischen Variablen angewendet werden und erwartet
als Parameter die Anzahl an Nachkommastellen.