Numeri JavaScript

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

Prova tu stesso

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

Prova tu stesso

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

Prova tu stesso

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

Prova tu stesso

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

Prova tu stesso

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)

Prova tu stesso

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)

Prova tu stesso

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)

Prova tu stesso

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)

Prova tu stesso

Un errore comune è pensare che il risultato dovrebbe essere 30:

Esempio

var x = 10;
var y = 20;
var z = "The result is: " + x + y;

Prova tu stesso

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;

Prova tu stesso

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

Prova tu stesso

Questo esempio funzionerà anche così:

var x = "100";
var y = "10";
var z = x * y;       // z sarà 1000

Prova tu stesso

Questo esempio funziona così:

var x = "100";
var y = "10";
var z = x - y;      // z sarà 90

Prova tu stesso

Ma questo esempio non funzionerà come sopra:

var x = "100";
var y = "10";
var z = x + y;       // z non sarà 110 (sarà 10010)

Prova tu stesso

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)

Prova tu stesso

Ma se la stringa contiene un valore numerico, il risultato sarà un numero:

Esempio

var x = 100 / "10";     // x sarà 10

Prova tu stesso

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

Prova tu stesso

attenzione NaN.Se usi operazioni matematiche con NaNquindi il risultato sarà anche NaN:

Esempio

var x = NaN;
var y = 5;
var z = x + y;         // z sarà NaN

Prova tu stesso

Il risultato potrebbe essere una concatenazione di stringhe:

Esempio

var x = NaN;
var y = "5";
var z = x + y;         // z sarà NaN5

Prova tu stesso

NaN È un numero,typeof NaN Restituisce number:

Esempio

typeof NaN;             // Restituisce "number"

Prova tu stesso

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;
}

Prova tu stesso

Dividere per 0 (zero) genera anche Infinity:

Esempio

var x =  2 / 0;          // x sarà Infinity
var y = -2 / 0;          // y sarà -Infinity

Prova tu stesso

Infinity È un numero:typeOf Infinity Restituisce number.

Esempio

typeof Infinity;        // Restituisce "number"

Prova tu stesso

esadecimale

JavaScript interpreta i numeri con prefisso 0x i numeri costanti sono interpretati come esadecimali.

Esempio

var x = 0xFF;             // x sarà 255.

Prova tu stesso

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

Prova tu stesso

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

Prova tu stesso

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

Prova tu stesso

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

Prova tu stesso

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

Prova tu stesso

Gli oggetti JavaScript non possono essere confrontati.