Salt la conținutul principal
Modulul 2 · Lecția 3 din 47/32 în curs~10 min
Lecții din modul (3/4)

Numere și matematică

În JavaScript există un singur tip numeric: number. Ambele numere întregi iar zecimale (virgula flotantă) trăiesc acolo. Fără int / float separat ca în alte limbi.

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 (!)

Obiectul global Math

Math nu este o funcție: este un obiect cu metode utile și constante. Nu îl instanțiezi, îl folosești 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

Numere aleatorii

Math.random() returnează o zecimală între 0 (inclus) și 1 (exclus). Pentru a obține un număr întreg într-un interval, utilizați o formulă mică:

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;

Durerile zecimalelor (virgula flotantă)

JS folosește reprezentarea IEEE-754 pe 64 de biți, partajată cu aproape toți limbi. Este o reprezentare binară, deci unele zecimale nu pot fi reprezentat exact:

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

Soluție standard: rotunjește cu toFixed(n) (care returnează un șir) sau utilizați numere întregi în cenți/mii atunci când lucrați cu bani:

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

Încearcă

Exercițiu#js.m2.l3.e1
Încercări: 0Se încarcă…

Calculați aria unui cerc cu raza `r = 5` rotunjită la două zecimale, ca un `număr`. Pentru `r=5` este de așteptat 78,54.

Se încarcă editorul...
Afișează indiciu

Math.PI pentru pi, ** pentru exponentiare; .toFixed(2) pentru a rotunji, Number(...) pentru a converti înapoi la un număr.

Soluție disponibilă după 3 încercări

Exercițiu de revizuire

Exercițiu#js.m2.l3.e2
Încercări: 0Se încarcă…

Având în vedere trei numere 12, 7, 23, returnați ca ultimă expresie diferența dintre maxim și min (adică 16).

Se încarcă editorul...
Afișează indiciu

Math.max și Math.min acceptă mai multe argumente separate prin virgulă.

Soluție disponibilă după 3 încercări