Number
In JavaScript il tipo di dato Number rappresenta tutti i numeri, sia interi che decimali, positivi e negativi.
A differenza di molti altri linguaggi, non esistono tipi separati come int, float o double: tutto è un Number.
Internamente JavaScript utilizza lo standard IEEE 754 a 64 bit (double precision).
Creare un Number
let a = 10;
let b = 3.14;
let c = -42;Anche i numeri scientifici sono supportati:
let d = 1e3; // 1000
let e = 2.5e-4; // 0.00025Operazioni matematiche
let x = 10 + 5; // 15
let y = 10 - 5; // 5
let z = 10 * 5; // 50
let w = 10 / 5; // 2
let r = 10 % 3; // 1 (resto)Numeri speciali
JavaScript ha alcuni valori numerici speciali:
| Valore | Descrizione |
|---|---|
Infinity | Numero infinito positivo |
-Infinity | Numero infinito negativo |
NaN | Not a Number |
10 / 0; // Infinity
-10 / 0; // -Infinity
"ciao" * 2; // NaNVerifiche sui Number
Number.isNaN(NaN); // true
Number.isFinite(10); // true
Number.isInteger(5); // truePrecisione e limiti
I Number non sono sempre precisi:
0.1 + 0.2; // 0.30000000000000004Questo accade per via della rappresentazione binaria.
Limiti massimi e minimi
Number.MAX_VALUE;
Number.MIN_VALUE;
Number.MAX_SAFE_INTEGER; // 9007199254740991
Number.MIN_SAFE_INTEGER; // -9007199254740991Oltre questi valori, i numeri non sono più affidabili.
Arrotondamenti
Math.round(4.6); // 5
Math.floor(4.6); // 4
Math.ceil(4.2); // 5
Math.trunc(4.9); // 4Conversione in Number
Number("123"); // 123
Number("12.5"); // 12.5
Number("ciao"); // NaN
parseInt("10px"); // 10
parseFloat("3.14px"); // 3.14Controllare se è un Number
typeof 10; // "number"
typeof NaN; // "number"
typeof Infinity; // "number"Confronti
10 === 10; // true
10 === "10"; // false
10 == "10"; // true (conversione implicita)Usa sempre === per evitare conversioni automatiche.
Quando usare Number
Usa Number per:
- Calcoli matematici
- Valori di prezzo, contatori, percentuali
- Coordinate, dimensioni, punteggi
Se devi gestire numeri molto grandi, usa BigInt.
Best practice
- Non fidarti mai delle somme decimali senza arrotondare.
- Evita confronti diretti tra numeri con virgola.
- Usa
Number.isNaN()invece diisNaN(). - Preferisci
===a==.
Il tipo Number è uno dei pilastri di JavaScript: semplice in apparenza, ma con comportamenti che è fondamentale conoscere per evitare bug nascosti.