Un valore numerico è composto da qualsiasi serie di caratteri numerici, ad esempio:
5
Il tipo di dati numerici include anche alcune proprietà globali speciali che
rappresentano concetti numerici, ad esempio Infinity
e NaN
, un valore che significa
"non è un numero" il potenziale risultato del tentativo di eseguire
su valori non numerici.
L'oggetto numerico
Quando un valore viene passato alla funzione Number()
, tale valore viene convertito in
il numero equivalente. Ad esempio, una stringa numerica restituisce un equivalente
primitiva numerica:
Number( "10" );
> 10
Il passaggio di un valore false
o null
a Number()
restituisce 0
, mentre true
restituisce
1
,
Number( null );
> 0
Number( false );
> 0
Number( true );
> 1`
Se non è possibile convertire un valore, come nel caso di undefined
o di una stringa
contenente caratteri non numerici, la funzione Number
restituisce NaN
:
Number( undefined );
> NaN
Number( "The number 3." );
> NaN
Come spiegato in dettaglio nell'ereditarietà prototipale,
probabilmente avrai poca o nessuna ragione per usare l'oggetto Number
come
poiché crea un oggetto Number
anziché un valore letterale numerico.
let numObject = new Number( 15 );
numObject;
> Number { 15 }
Questo oggetto si comporta come il valore assegnato per le operazioni matematiche, non supera confronti rigidi di uguaglianza con valori letterali di numeri perché i tipi di dati non corrispondono senza fornire alcun vantaggio pratico rispetto a un valore letterale.
let tenObject = new Number( 10 );
tenObject + 5;
> 15
tenObject === 10;
> false
Numeri in virgola mobile e numeri interi
JavaScript ha un solo tipo di numero: Precisione doppia IEEE 754-1985 a 64 bit.
numeri in virgola mobile tra
-2^1024
e 2^1024
. Prima che JavaScript archivi qualsiasi numero in memoria,
converte quel numero in un numero binario in virgola mobile, chiamato anche numero in virgola mobile.
Questa memoria a 64 bit (un bit "di segno" positivo o negativo, 11 bit per esponente e 52 bit per una frazione) possono causare errori di precisione con qualsiasi numero di cifre che non rientrano in un intervallo consentito. Questa limitazione è intrinseca al tipo di dati numerici di JavaScript.
0.1 + 0.7
> 0.7999999999999999
Un valore numerico può essere invece memorizzato come numero intero, ovvero un numero in virgola mobile
senza una frazione compresa tra -(2^53 − 1)
e 2^53 − 1
. Poiché i dati mobili
vengono memorizzati nello stesso modo fondamentale, non c'è alcuna differenza pratica
nel funzionamento di questi numeri. Tuttavia, consigliamo di utilizzare i numeri interi ogni volta
possibile per evitare errori di precisione.
Operatori dei numeri
Quando utilizzi operatori matematici standard con le primitive numeriche, la classe ordine delle operazioni matematico si applica: tutte le espressioni racchiuse tra parentesi vengono valutate per prime, seguite esponenti, moltiplicazioni, divisione, addizione e sottrazione.
Operatore | Nome | Descrizione | Utilizzo | Risultato |
---|---|---|---|---|
+ |
Aggiunta | 2+2 |
4 |
|
- |
Sottrazione | 4-2 |
2 |
|
* |
Moltiplicazione | 2*5 |
10 |
|
/ |
Divisione | 10/5 |
2 |
|
++ |
Incremento | Aggiunge uno a un numero | 2++ |
3 |
-- |
Diminuisci | Sottrae uno da un numero | 3-- |
2 |
** |
Esponente | Restituisce il risultato dell'aumento del primo operando alla potenza del secondo operando. |
2**4 |
16 |
% |
Resto | Restituisce il resto rimanente quando il primo operando viene diviso per il secondo operando. |
12%5 |
2 |
Puoi anche utilizzare operatori di assegnazione matematico per eseguire sul valore di una variabile e assegnarla immediatamente calcolato di nuovo alla variabile.
Operatore | Nome | Utilizzo |
---|---|---|
+= |
Assegnazione addizione | myValue += 2 |
-= |
Assegnazione della sottrazione | myValue -= 2 |
*= |
Assegnazione di moltiplicazione | myValue *= 2 |
/= |
Assegnazione divisione | myValue /= 2 |
**= |
Assegnazione esponente | myValue **= 2 |
%= |
Assegnazione restante | myValue %= 2 |
Valori simbolici
La primitiva numerica si applica anche ad alcuni casi speciali: il "non un numero"
(NaN
) e un valore che rappresenta l'infinito che può essere positivo
(Infinity
) o negativo (-Infinity
).
È raro che Infinity
riscontrerai se è successo dopo la divisione per zero,
in cui la maggior parte dei linguaggi di programmazione genera un errore:
10 / 0
> Infinity
Ricorda che JavaScript è sensibile alle maiuscole. Infinity
è un tipo di dati numerico
che rappresenta il concetto di infinito, ma infinity
non ha un significato speciale:
Infinity
> Infinity
infinity
> Uncaught ReferenceError: infinity is not defined
NaN
(che significa "Non è un numero")
si presenta con maggiore frequenza nei casi in cui il risultato di un'operazione aritmetica
non può essere espresso come numero. Ad esempio, perché JavaScript cerca di dedurre
tipo di dati da valore e contesto, un valore letterale stringa contenente solo un numero può
essere utilizzato in un'operazione matematica:
"2" * 2;
> 4
Tuttavia, se la stringa non può essere analizzata come valore numerico, il calcolo l'operazione genera un valore diverso da un numero:
"two" * 2;
> NaN
NaN
viene restituito ogni volta che un valore non valido è rappresentato da un numero
in un'operazione matematica. Ecco alcuni esempi:
- Numero di conversioni non riuscite (ad esempio,
parseInt( undefined )
) - Operazioni aritmetiche in cui il risultato non è un numero reale (ad esempio,
0 / 0
eMath.sqrt( -10 )
) - Un'operazione aritmetica con un risultato indeterminato (
0 * Infinity
) - Un'operazione aritmetica che include un'istruzione
NaN
esplicita (NaN + 2
) o un risultatoNaN
(2 * "string" / 2
)
Verifica le tue conoscenze
Qual è il risultato del superamento di false
a Number()
?
Qual è il risultato della seguente operazione matematica?
"Six" * 3