Numeri JavaScript
- Pagina precedente Template di stringhe JS
- Pagina successiva JS BigInt
JavaScript ha solo un tipo di numero.
La scrittura dei numeri può essere con o senza punto decimale.
JavaScript Numero
I numeri JavaScript possono essere scritti con o senza punto decimale:
Esempio
var x = 3.14; // Valore con punto decimale var y = 3; // Valore senza punto decimale
I numeri molto grandi o molto piccoli possono essere scritti in notazione a scienze:
Esempio
var x = 123e5; // 12300000 var y = 123e-5; // 0.00123
I numeri JavaScript sono sempre numeri a virgola mobile di 64 bit
A differenza di molti altri linguaggi di programmazione, JavaScript non definisce diversi tipi di numeri, come interi, corti, lunghi, a virgola mobile, ecc.
I numeri JavaScript sono sempre memorizzati come numeri a virgola mobile a doppia precisione, secondo lo standard internazionale IEEE 754.
Questo formato utilizza 64 bit per memorizzare il valore, dove 0 a 51 memorizzano il numero (fragmento), 52 a 62 l'esponente e il bit 63 il simbolo:
Valore(aka Frazione/Esponente) | Esponente | Simbolo |
---|---|---|
52 bits(0 - 51) | 11 bits (52 - 62) | 1 bit (63) |
Precisione
I numeri interi (senza esponente o notazione a scienze) sono precisi fino a 15 cifre.
Esempio
var x = 999999999999999; // x sarà 999999999999999 var y = 9999999999999999; // y sarà 10000000000000000
Il numero massimo per le virgole mobili è di 17 cifre, ma l'aritmetica a virgola mobile non è sempre 100% precisa:
Esempio
var x = 0.2 + 0.1; // x sarà 0.30000000000000004
L'uso di moltiplicazione e divisione aiuta a risolvere il problema sopra:
Esempio
var x = (0.2 * 10 + 0.1 * 10) / 10; // x sarà 0.3
Aggiunta di numeri e stringhe
Attenzione!!
La somma e la concatenazione in JavaScript utilizzano l'operatore +.
I numeri si sommano. Le stringhe si concatenano.
Se si aggiungono due numeri, il risultato sarà un numero:
Esempio
var x = 10; var y = 20; var z = x + y; // z sarà 30 (un numero)
Se si aggiungono due stringhe, il risultato sarà una concatenazione di stringhe:
Esempio
var x = "10"; var y = "20"; var z = x + y; // z sarà 1020 (stringa)
Se si aggiunge un numero e una stringa, il risultato è una concatenazione di stringhe:
Esempio
var x = 10; var y = "20"; var z = x + y; // z sarà 1020 (una stringa)
Se aggiungi una stringa e un numero, il risultato sarà una concatenazione di stringhe:
Esempio
var x = "10"; var y = 20; var z = x + y; // z sarà 1020 (stringa)
Un errore comune è pensare che il risultato dovrebbe essere 30:
Esempio
var x = 10; var y = 20; var z = "The result is: " + x + y;
Un errore comune è pensare che il risultato dovrebbe essere 102030:
Esempio
var x = 10; var y = 20; var z = "30"; var result = x + y + z;
JavaScript compila da sinistra a destra.
Poiché x e y sono numeri, 10 + 20 vengono sommati.
Poiché z è una stringa, 30 + "30" viene concatenato.
Stringa numerica
Le stringhe JavaScript possono avere contenuti numerici:
var x = 100; // x è un numero var y = "100"; // y è una stringa
In tutte le operazioni numeriche, JavaScript tenta di convertire le stringhe in numeri:
Questo esempio funziona così:
var x = "100"; var y = "10"; var z = x / y; // z sarà 10
Questo esempio funzionerà anche così:
var x = "100"; var y = "10"; var z = x * y; // z sarà 1000
Questo esempio funziona così:
var x = "100"; var y = "10"; var z = x - y; // z sarà 90
Ma questo esempio non funzionerà come sopra:
var x = "100"; var y = "10"; var z = x + y; // z non sarà 110 (sarà 10010)
Nell'ultimo esempio, JavaScript ha concatenato le stringhe con l'operatore +.
NaN - Non un numero
NaN
È una parola riservata JavaScript, che indica che un numero non è un numero legittimo.
Provare a dividere con una stringa non numerica restituirà NaN (Not a Number):
Esempio
var x = 100 / "Apple"; // x sarà NaN (Not a Number)
Ma se la stringa contiene un valore numerico, il risultato sarà un numero:
Esempio
var x = 100 / "10"; // x sarà 10
Puoi utilizzare la funzione JavaScript globale isNaN()
per determinare se un valore è un numero:
Esempio
var x = 100 / "Apple"; isNaN(x); // Restituisce true perché x non è un numero
attenzione NaN
.Se usi operazioni matematiche con NaN
quindi il risultato sarà anche NaN
:
Esempio
var x = NaN; var y = 5; var z = x + y; // z sarà NaN
Il risultato potrebbe essere una concatenazione di stringhe:
Esempio
var x = NaN; var y = "5"; var z = x + y; // z sarà NaN5
NaN
È un numero,typeof NaN
Restituisce number
:
Esempio
typeof NaN; // Restituisce "number"
Infinity
Infinity
oppure -Infinity
)è il valore restituito da JavaScript quando calcola un numero al di sopra del range massimo possibile.
Esempio
var myNumber = 2; while (myNumber != Infinity) { // Esegui fino a Infinity myNumber = myNumber * myNumber; }
Dividere per 0 (zero) genera anche Infinity
:
Esempio
var x = 2 / 0; // x sarà Infinity var y = -2 / 0; // y sarà -Infinity
Infinity
È un numero:typeOf Infinity
Restituisce number
.
Esempio
typeof Infinity; // Restituisce "number"
esadecimale
JavaScript interpreta i numeri con prefisso 0x
i numeri costanti sono interpretati come esadecimali.
Esempio
var x = 0xFF; // x sarà 255.
Non scrivere mai numeri con prefisso zero (ad esempio 07).
Alcune versioni di JavaScript interpretano i numeri con prefisso zero come ottali.
Per default, JavaScript mostra i numeri come decimali.
Ma è possibile utilizzare toString()
Il metodo esporta il numero in esadecimale, ottale o binario.
Esempio
var myNumber = 128; myNumber.toString(16); // Restituisce 80 myNumber.toString(8); // Restituisce 200 myNumber.toString(2); // Restituisce 10000000
I numeri possono essere oggetti
Di solito i numeri JavaScript vengono creati tramite valori originali: var x = 123
Ma può anche essere definito con la parola chiave new
Definito come oggetto: var y = new Number(123)
Esempio
var x = 123; var y = new Number(123); // typeof x restituisce number // typeof y restituisce object
Non creare oggetti numerici. Questo può rallentare l'esecuzione.
new
La parola chiave rende il codice più complesso e può produrre risultati imprevisti:
Quando si utilizza ==
Con l'operatore uguale, i numeri che sembrano uguali sembrano essere uguali:
Esempio
var x = 500; var y = new Number(500); // (x == y) è true perché x e y hanno valori uguali
Quando si utilizza ===
Dopo l'operatore uguale, i numeri che sembrano uguali diventano diversi perché ===
Gli operatori devono essere entrambi di tipo e valore uguali.
Esempio
var x = 500; var y = new Number(500); // (x === y) è false perché x e y sono di tipo diverso
Addirittura peggio. Gli oggetti non possono essere confrontati:
Esempio
var x = new Number(500); var y = new Number(500); // (x == y) è false perché gli oggetti non possono essere confrontati
Gli oggetti JavaScript non possono essere confrontati.
- Pagina precedente Template di stringhe JS
- Pagina successiva JS BigInt