L'oggetto Number
fornisce metodi e proprietà per la manipolazione di valori numerici. Possiamo creare un oggetto Number
a partire da un'espressione numerica:
var x = new Number(123);
var y = new Number(3.14);
Possiamo anche usare Object
per ottenere un oggetto Number
partendo da un'espressione numerica, ma è preferibile utilizzare l'oggetto specifico per rendere più leggibile il codice.
Proprietà di Number
Tra le proprietà dell'oggetto Number
segnaliamo:
Proprietà | Descrizione |
---|---|
EPSILON |
La più piccola differenza tra la rappresentazione di due numeri (ECMAScript 6) |
MAX_VALUE |
Il più grande numero positivo rappresentabile |
MIN_VALUE |
Il più piccolo numero positivo rappresentabile diverso da zero |
NaN |
Un valore non numerico |
NEGATIVE_INFINITY |
Rappresenta il valore infinito negativo |
POSITIVE_INFINITY |
Rappresenta il valore infinito positivo |
È importante sottolineare che queste proprietà sono specifiche dell'oggetto Number
e non vengono trasmesse alle singole istanze. Quindi per utilizzarle faremo sempre riferimento all'oggetto base come mostrato nel seguente esempio:
var x = new Number(239);
if (x < Number.MAX_VALUE) {
...
}
Metodi di Number
Tra i metodi di Number()
abbiamo:
Metodo | Descrizione |
---|---|
isFinite(n) |
Restituisce true se il numero n passato come argomento è un valore finito; false altrimenti (ECMAScript 6) |
isInteger(n) |
Restituisce true se il numero n passato come argomento è un valore intero; false altrimenti (ECMAScript 6) |
isNaN(n) |
Restituisce true se il numero n passato come argomento non è un valore numerico; false altrimenti(ECMAScript 6) |
Utile notare che, a differenza delle analoghe funzioni globali, i metodi di Number
elencati non effettuano alcuna conversione di tipo sul valore passato come argomento, quindi possiamo ottenere risultati differenti come mostra il seguente esempio:
var x = isFinite("123"); // ritorna 'true' perché trasforma la stringa
var y = Number.isFinite("123"); // ritorna 'false'
La variabile x
avrà il valore true
, dal momento che JavaScript effettua implicitamente la conversione della stringa in valore numerico, mentre y
avrà valore false
.
Un oggetto di tipo Number
può essere utilizzato in qualsiasi espressione in cui può essere utilizzato un valore numerico. Esso verrà implicitamente convertito in valore numerico per valutare l'espressione. Quindi possiamo scrivere espressioni come la seguente senza doverci preoccupare di effettuare conversioni esplicite:
var x = new Object(123);
x = x + 1;
Dopo l'esecuzione del codice avremo l'oggetto x
con valore 124.
Metodi di rappresentazione
Ciascuna istanza di un oggetto Number
ha a disposizione tre metodi di rappresentazione: toExponential()
, toFixed()
e toPrecision()
.
Il metodo toExponential() restituisce la rappresentazione esponenziale del suo valore numerico sotto forma di stringa:
var x = new Object(123);
var y = x.toExponential();
La variabile y
sarà una stringa con valore "1.23e+2"
.
Il metodo toFixed() restituisce una stringa rappresentante il valore numerico formattato con un numero fisso di cifre decimali. Il metodo prevede un parametro opzionale che rappresenta il numero di posizioni da prevedere dopo il separatore decimale. Se non viene passato nessun parametro si assume l'assenza di valori decimali:
var x = new Object(123.4);
var y = x.toFixed();
var z = x.toFixed(2);
La variabile y
conterrà il valore "123" mentre z
avrà la stringa "123.40".
Infine, il metodo toPrecision() prende come argomento un valore numerico opzionale e restituisce una stringa che rappresenta il numero alla precisione specificata, cioè restituisce una rappresentazione che prende in considerazione il numero di cifre significative specificate. Il seguente codice mostra alcuni esempi di uso del metodo con il loro risultato:
var x = new Number(123.4);
x.toPrecision(); //"123.4"
x.toPrecision(1); //"1e+2"
x.toPrecision(2); //"1.2e+2"
x.toPrecision(3); //"123"
x.toPrecision(4); //"123.4"
x.toPrecision(5); //"123.40"
x.toPrecision(6); //"123.400"
Dall'esempio possiamo notare come la rappresentazione con un numero di cifre inferiore a quelle previste per la parte intera del numero è in notazione esponenziale. Inoltre, se non si specifica alcun parametro viene restituito la rappresentazione in stringa del valore numerico. Infine, i possibili valori previsti come argomento del metodo per specificare la precisione vanno da 1 fino ad un massimo di 21.