In JavaScript sind Zahlen immer Floating Point Numbers, egal ob sie eine ganze Zahl, wie 101 oder eben 3.141 ist. Das können wir auch ganz einfach überprüfen:
console.log(23 === 23.0); // true
Floating Point Numbers
Die Präzision von Floating Point Numbers ist stark begrenzt, da solch eine Zahl mit dem Binärsystem dargestellt wird. So kann z.B. folgendes passieren:
console.log(0.1 + 0.2); // 0.30000000000000004
console.log(0.1 + 0.2 === 0.3); // false
Hier müssen wir einfach aufpassen, da wir es als Fehler von JavaScript bzw. allgemein von Computern hinnehmen müssen.
Konversion
Es gibt mehrere Möglichkeiten einen Wert in eine Zahl zu konvertieren:
console.log(Number('23')); // 23
console.log(+'23'); // 23
console.log(Number.parseInt('30px', 10)); // 30
console.log(Number.parseFloat('2.5rem')); // 2.5
Die beiden letzteren nennt man auch Parsing und ist nützlich um auch Strings mit Suffixen, z.B. CSS-Werten, in Zahlen umzuwandeln.
Überprüfung
Es gibt hauptsächlich zwei Methoden, um zu überprüfen, ob eine Zahl auch wirklich eine Zahl ist: isNaN() und isFinite(). Letzteres ist dabei deutlich zuverlässiger, da es auch Werte, wie Infinity abfangen kann:
console.log(Number.isNaN(20)); // false
console.log(Number.isNaN('20')); // false
console.log(Number.isNaN(+'20X')); // true
console.log(Number.isNaN(23 / 0)); // false
console.log(Number.isFinite(20)); // true
console.log(Number.isFinite('20')); // false
console.log(Number.isFinite(+'20X')); // false
console.log(Number.isFinite(23 / 0)); // false
Wurzeln
Wir können Wurzeln mit der sqrt()-Methode beschreiben. Natürlich sind aber auch Brüche im Exponenten möglich um Wurzeln darzustellen:
console.log(Math.sqrt(25)); // 5
console.log(25 ** (1 / 2)); // 5
console.log(8 ** (1 / 3)); // 2
Aggregatfunktionen
JavaScript stellt uns zwei Aggregatfunktionen zur Verfügung, min() und max():
console.log(Math.max(5, 18, 23, 11, 2)); // 23
console.log(Math.min(5, 18, 23, 11, 2)); // 2
Konstanten
Zudem gibt uns JavaScript Zugriff auf die Konstanten π und e (Eulersche Zahl):
console.log(Math.PI); // 3.141592653589793
console.log(Math.E); // 2.718281828459045
Random
Die random()-Funktion ermöglicht uns die Erstellung von zufälligen Zahlen:
console.log(Math.random());
console.log(Math.random() * 100);
console.log(Math.trunc(Math.random() * 100));
Runden
Auf Ganzzahlen runden
Beim Runden gibt es essenziell vier Methoden:
trunc(): entfernt alle Nachkommastellen
round(): rundet nach mathematischen Gesetzen auf die nächste Ganzzahl
ceil(): rundet immer auf
floor(): rundet immer ab
console.log(Math.trunc(23.3)); // 23
console.log(Math.round(23.3)); // 23
console.log(Math.round(23.9)); // 24
console.log(Math.ceil(23.3)); // 24
console.log(Math.ceil(23.9)); // 24
console.log(Math.floor(23.3)); // 23
console.log(Math.floor(23.9)); // 23
Auf Dezimalzahlen runden
Um auf Dezimalzahlen zu runden, nutzen wir die Methode toFixed().
console.log((2.7).toFixed(0)); // "3"
console.log((2.7).toFixed(3)); // "2.700"
console.log((2.345).toFixed(2)); // "2.35"
console.log(+(2.7).toFixed(0)); // 3
console.log(+(2.7).toFixed(3)); // 2.7
Die Methode toFixed() gibt einen String aus und keine Zahl!