Categorie
Javascript Programmazione

{JS} new Number()

Number

L’oggetto Number fornisce metodi e proprietà per la manipolazione di valori numerici.

Numeri, tipi primitivi e oggetti

Probabilmente vi starete chiedendo se è necessario definire con la formula “new Number” un numero per accedere a proprietà e metodi?

/* Inizializzazione di un variabile primitiva */
var x = 10;

/* Creazione di un oggetto Number*/
var x = new Number(10);

Le variabili e costanti nella loro sintassi semplice sono valori di tipo primitivo ma Javascript nel momento in cui invochiamo le proprietà e metodi di Number, “converte” automaticamente una variabile semplice in un oggetto.

Note: 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.

Modalità di accesso alle proprietà

Esistono oggetti con differenti modalità di accesso alle proprie proprietà e metodi:

  • accessibili solo tramite la propria base
  • accessibili anche da le istanze generate

L’oggetto Number rientra tra questi.

Proprietà accessibili solo dalla propria base

Number possiede alcune proprietà e metodi accessibili solo mediante la sua base, il che significa che non sono trasferibili alle sue istanze.

Proprietà

ProprietàDescrizione
EPSILONLa più piccola differenza tra la rappresentazione di due numeri
MAX_VALUEIl più grande numero positivo rappresentabile
MIN_VALUEIl più piccolo numero positivo rappresentabile diverso da zero
NaNUn valore non numerico
NEGATIVE_INFINITYRappresenta il valore infinito negativo
POSITIVE_INFINITYRappresenta il valore infinito positivo

Queste proprietà sono specifiche dell’oggetto Number e non sono trasmesse alle singole istanze. Bisogna quindi fare sempre riferimento all’oggetto base:

var valoreMaxRappresentabile = Number.MAX_VALUE;

var x = 10;
var stato;

if (x > Numeber.MAX_VALUE) {
stato = "Il valore di X è maggiore al numero massimo positivo rappresentabile";
document.write(stato);
}else{
stato = "Il valore di X è inferiore al numero massimo positivo rapprestabile";
document.write(stato);
}

Metodi

Stessa questione per i metodi; i metodi sono specifici dell’oggetto Number e non sono trasmesse alle singole istanze.
Bisogna quindi fare sempre riferimento all’oggetto base:

MetodoDescrizione
isFinite(n)Restituisce true se il numero n passato come argomento è un valore finito; false altrimenti
isInteger(n)Restituisce true se il numero n passato come argomento è un valore intero; false altrimenti
isNaN(n)Restituisce true se il numero n passato come argomento non è un valore numerico; false altrimenti

I metodi di Number prevedono che vengano passati, come parametri, valori di tipo numerico; se proviamo ad indicargli come parametro il nome della variabile x contenente valore stringa ’10’ restituirà “false” in quanto lo identificherà come valore non numerico.

var x = "10";
var risultatoInteger = Number.isInteger(x); 

/* restituirà false anche se è intero in quanto stringa*/

In tutto è spiegato in quanto a differenza delle analoghe funzioni globali, i metodi di Number elencati non effettuano alcuna conversione di tipo sul valore passato come argomento.

/* Funzione globale */
var x = isInteger('10');

/* anche se passato erroneamente con gli '' (apici) il parametro sarà convertito in numero, avremo quindi "True" */
/* Metodo di Number */
var x = Numeber.isInteger('10');

/*  il parametro, erroneamente passato con gli '' (apici), non sarà convertito in numero, avremo quindi "False" */

Proprietà accessibili anche dalle istanze

Le seguenti proprietà e metodi, “trasferibili”, sono accessibili dalle istanze.

Metodi di rappresentazione numerica

toExponential()restituisce la rappresentazione esponenziale del suo valore numerico sotto forma di stringa
toFixed()restituisce la rappresentazione valore numerico formattato con un numero fisso di cifre decimali sotto forma di stringa
toPrecision()restituisce una rappresentazione che prende in considerazione il numero di cifre significative specificate
toExponential()
var x = new Object(123);
var y = x.toExponential();

La variabile y sarà una stringa con valore "1.23e+2"

toFixed()
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”

toPrecision()
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"

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *