Numeri e calcoli
In JavaScript 0.1 + 0.2 dà 0.30000000000000004, e 17 % 5 dà 2. Entrambi hanno senso quando sai come vengono memorizzati i numeri e che cosa significa %.
Gli operatori aritmetici
Gran parte di ciò che fanno i computer si riduce all'aritmetica, e JavaScript la scrive più o meno come faresti su carta. I simboli che fanno il lavoro si chiamano operatori. Cinque li conosci già, e due sono nuovi:
| Operatore | Significato | Esempio | Risultato |
|---|---|---|---|
| + | addizione | 7 + 2 | 9 |
| - | sottrazione | 7 - 2 | 5 |
| * | moltiplicazione | 7 * 2 | 14 |
| / | divisione | 7 / 2 | 3.5 |
| % | resto | 7 % 2 | 1 |
| ** | potenza | 7 ** 2 | 49 |
La moltiplicazione usa l'asterisco, perché la lettera x si confonderebbe con una variabile chiamata x. La divisione dà sempre il risultato esatto, decimali compresi: 7 / 2 fa 3.5, non 3. L'operatore resto % divide e tiene solo ciò che avanza. 17 % 5 fa 2, perché il 5 sta nel 17 tre volte (15) con resto 2. Sembra una curiosità, ma è uno degli operatori più usati nella programmazione. Un numero è pari esattamente quando n % 2 vale 0, e minutes % 60 dà i minuti che restano dopo aver tolto le ore intere.
Ordine delle operazioni
JavaScript segue lo stesso ordine della matematica che si fa a scuola. Prima le potenze, poi moltiplicazione, divisione e resto, poi addizione e sottrazione. Gli operatori dello stesso livello si eseguono da sinistra a destra, tranne ** che va da destra a sinistra. Le parentesi hanno la precedenza su tutto, quindi nel dubbio aggiungile: non costano nulla e rendono chiara l'intenzione a chi leggerà dopo.
console.log(2 + 3 * 4); // 14
console.log((2 + 3) * 4); // 20
console.log(20 - 6 / 2); // 17
console.log(2 ** 3 * 5); // 40Scorciatoie per aggiornare una variabile
Aggiornare una variabile usando il suo stesso valore è così comune che esistono forme brevi. x += 5 significa x = x + 5, e ci sono le forme corrispondenti -=, *= e /=. Aggiungere o togliere esattamente uno ha una forma ancora più breve: x++ aggiunge 1 e x-- sottrae 1. Vedrai ++ di continuo nei cicli.
let coins = 10;
coins += 5; // 15
coins *= 2; // 30
coins--; // 29
console.log(coins); // 29Gli strumenti di Math
JavaScript ha un oggetto integrato chiamato Math che contiene strumenti pronti per i numeri. Math.round(2.5) arrotonda all'intero più vicino (3), Math.floor(2.9) arrotonda sempre per difetto (2) e Math.ceil(2.1) arrotonda sempre per eccesso (3). Math.max(4, 9, 2) dà il più grande dei suoi valori e Math.min il più piccolo. Math.sqrt(81) è la radice quadrata, 9, e Math.PI è il numero π, circa 3.14159. Math.floor e % fanno una bella coppia: per 135 minuti, Math.floor(135 / 60) dà 2 ore e 135 % 60 dà 15 minuti.
Perché 0.1 + 0.2 non fa esattamente 0.3
JavaScript memorizza ogni numero in binario usando una quantità fissa di memoria, secondo il formato a doppia precisione IEEE 754 previsto dallo standard ECMAScript. Alcuni decimali comuni, come 0.1, non si possono scrivere esattamente in binario, proprio come 1/3 non si può scrivere esattamente in decimale. Di solito i piccolissimi errori di arrotondamento restano nascosti, ma a volte si vedono: 0.1 + 0.2 stampa 0.30000000000000004. Non è un bug del tuo codice. Quando mostri soldi o misure alle persone, arrotonda il risultato, per esempio con (0.1 + 0.2).toFixed(2), che dà la stringa "0.30". I numeri interi fino a circa novemila milioni di milioni vengono memorizzati in modo esatto, quindi contare non è mai un problema.
Esempi svolti
Esempio 1. La media di 80, 90 e 85 è (80 + 90 + 85) / 3. Senza parentesi, 80 + 90 + 85 / 3 divide solo l'85 e dà circa 198.3. Esempio 2. Il 2024 è un multiplo di 4? 2024 % 4 vale 0, quindi sì. Esempio 3. Dividere 50 caramelle fra 6 bambini: Math.floor(50 / 6) dà 8 a testa e 50 % 6 dà 2 caramelle avanzate.
| operatore | Un simbolo che lavora sui valori: + - * / % ** |
| % | Resto della divisione: 17 % 5 fa 2 |
| ** | Potenza: 2 ** 3 fa 8 |
| += | x += 5 significa x = x + 5 |
| ++ | Aggiungere esattamente 1 a una variabile |
| Math.floor | Arrotondare per difetto a un intero |
| Math.round | Arrotondare all'intero più vicino |
| toFixed(2) | Scrivere un numero con 2 cifre decimali, come stringa |
- Che cosa stampa?
console.log(2 + 3 * 4); - Che cosa stampa?
console.log((2 + 3) * 4); - Che cosa stampa?
console.log(17 % 5); - Che cosa stampa?
console.log(9 / 2); - Che cosa stampa?
console.log(2 ** 5); - Che cosa stampa?
let x = 10; x += 4; x *= 2; console.log(x); - Che cosa stampa?
let n = 5; n++; n++; n--; console.log(n); - Che cosa stampa?
console.log(Math.floor(7.9), Math.ceil(7.1));- 8 8
- 7 8
- 7 7
- Che cosa stampa?
console.log(Math.max(3, 11, 6) - Math.min(3, 11, 6)); - Che cosa stampa?
console.log(10 - 4 - 3); - Quale espressione è vera per ogni numero pari n?
n % 2 === 0n / 2 === 0n % 2 === 1
- Che cosa stampa?
console.log((0.1 + 0.2).toFixed(2));
- + - * / funzionano come in matematica; / tiene i decimali.
- % dà il resto; n % 2 === 0 significa che n è pari.
- ** è la potenza. Prima le parentesi, poi **, poi * / %, poi + -.
- x += 5 e x++ sono forme brevi per aggiornare x.
- Strumenti utili: Math.floor, Math.round, Math.ceil, Math.max, Math.min, Math.PI.
- I decimali possono portare piccolissimi errori di arrotondamento; usa toFixed per mostrarli.
Fonti di questo corso (2)
- MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
- Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)
Consultato il: 2026-10-17