Direct naar de hoofdinhoud
Module 2 · Les 3 van 47/32 in de cursus~10 min
Modulelessen (3/4)

Cijfers en wiskunde

In JavaScript is er slechts één numeriek type: number. Beide gehele getallen en decimalen (floating point) staan daarin. Geen aparte int / float zoals in andere talen.

JS
typeof 42; // 'number'
typeof 3.14; // 'number'
typeof -0.001; // 'number'
typeof Infinity; // 'number'   ← Infinity is a special number
typeof NaN; // 'number'   ← even "Not a Number" is a number (!)

Het globale object Math

Math is geen functie: het is een object met nuttige methoden en constanten. Je instantiëert het niet, je gebruikt het direct:

JS
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   (always rounds down)
Math.ceil(4.1); // 5   (always rounds up)
Math.sqrt(16); // 4
Math.pow(2, 10); // 1024   (equivalent to 2 ** 10)
Math.PI; // 3.141592653589793

Willekeurige cijfers

Math.random() retourneert een decimaal tussen 0 (inbegrepen) en 1 (uitgesloten). Om een ​​geheel getal in een bereik te krijgen, gebruik je een kleine formule:

JS
// Random integer between 0 and 9
Math.floor(Math.random() * 10);

// Random integer between 1 and 6 (a six-sided die)
Math.floor(Math.random() * 6) + 1;

De pijn van decimalen (zwevende komma)

JS gebruikt de IEEE-754 64-bit representatie, die met bijna iedereen wordt gedeeld talen. Het is een binaire weergave, dus sommige decimalen kunnen dat niet zijn precies weergegeven:

JS
0.1 + 0.2; // 0.30000000000000004 (!)
0.1 + 0.2 === 0.3; // false

Standaardoplossing: rond af met toFixed(n) (wat een string retourneert) of gebruik gehele getallen in centen/duizendsten bij het werken met geld:

JS
(0.1 + 0.2).toFixed(2); // '0.30' (string)
Number((0.1 + 0.2).toFixed(2)); // 0.3 (number)

Probeer het

Oefening#js.m2.l3.e1
Pogingen: 0Laden…

Bereken de oppervlakte van een cirkel met straal `r = 5`, afgerond op twee decimalen, als een `getal`. Voor `r=5` wordt 78,54 verwacht.

Editor laden…
Toon hint

Math.PI voor pi, ** voor machtsverheffing; .toFixed(2) om af te ronden, Number(...) om terug naar een getal te converteren.

Oplossing beschikbaar na 3 pogingen

Oefening beoordelen

Oefening#js.m2.l3.e2
Pogingen: 0Laden…

Gegeven drie getallen 12, 7, 23, retourneer als laatste uitdrukking het verschil tussen de max en de min (d.w.z. 16).

Editor laden…
Toon hint

Math.max en Math.min accepteren meerdere door komma's gescheiden argumenten.

Oplossing beschikbaar na 3 pogingen