Lektionen des Moduls (3/4)
Zahlen und Math
In JavaScript gibt es nur einen einzigen numerischen Typ: number. Sowohl
Ganzzahlen (Integers) als auch Dezimalzahlen (im Englischen floating point) leben
dort. Es gibt keine separaten Typen int / float wie in anderen Sprachen.
typeof 42; // 'number'
typeof 3.14; // 'number'
typeof -0.001; // 'number'
typeof Infinity; // 'number' ← Infinity è un number speciale
typeof NaN; // 'number' ← anche "Not a Number" è un number (!)Das globale Math-Objekt
Math ist keine Funktion: Es ist ein Objekt mit nützlichen Methoden und
Konstanten. Es wird nicht instanziiert, sondern direkt verwendet:
Math.min(3, 1, 7); // 1
Math.max(3, 1, 7); // 7
Math.abs(-5); // 5
Math.round(4.5); // 5
Math.floor(4.9); // 4 (arrotonda sempre per difetto)
Math.ceil(4.1); // 5 (arrotonda sempre per eccesso)
Math.sqrt(16); // 4
Math.pow(2, 10); // 1024 (equivalente a 2 ** 10)
Math.PI; // 3.141592653589793Zufallszahlen
Math.random() gibt eine Dezimalzahl zwischen 0 (inklusive) und 1 (exklusive)
zurück. Um eine Ganzzahl in einem bestimmten Bereich zu erhalten, verwendest du
eine kleine Formel:
// Intero casuale fra 0 e 9
Math.floor(Math.random() * 10);
// Intero casuale fra 1 e 6 (un dado a sei facce)
Math.floor(Math.random() * 6) + 1;Die Probleme mit Dezimalzahlen (floating point)
JS verwendet die 64-Bit-IEEE-754-Darstellung, die fast alle Programmiersprachen teilen. Es ist eine binäre Darstellung, daher können einige Dezimalzahlen nicht exakt dargestellt werden:
0.1 + 0.2; // 0.30000000000000004 (!)
0.1 + 0.2 === 0.3; // falseStandardlösung: Runden mit toFixed(n) (gibt einen String zurück) oder die
Verwendung von Cent/Promille-Beträgen, wenn man mit Geld arbeitet:
(0.1 + 0.2).toFixed(2); // '0.30' (stringa)
Number((0.1 + 0.2).toFixed(2)); // 0.3 (number)Probier es aus
Berechne die Fläche eines Kreises mit dem Radius `r = 5`, gerundet auf die zweite Dezimalstelle, als `number`. Für `r=5` wird 78.54 erwartet.
Hinweis anzeigen
Math.PI für Pi, ** für Potenzierung; .toFixed(2) zum Runden, Number(...) zur Rückumwandlung in number.
Lösung nach 3 Versuchen verfügbar
Wiederholungsübung
Gib für die drei Zahlen 12, 7, 23 als letzten Ausdruck die Differenz zwischen dem Maximum und dem Minimum zurück (also 16).
Hinweis anzeigen
Math.max und Math.min akzeptieren mehrere Argumente durch Kommata getrennt.
Lösung nach 3 Versuchen verfügbar