JavaScript: Numeri e Date

Lezione#06 Parliamo ancora di numeri! In questa lezione, vedremo qualche aspetto matematico, analizzando metodi e proprietà che riguardano numeri e date in JavaScript.
Avere a che fare con numeri e date in JavaScript, è molto frequente. Inoltre, come abbiamo già visto, in JavaScript non esiste un tipo di dato intero o float, così come accade in c++, ma esiste un unico tipo di dato che viene indacato come number . Infatti se proviamo a scrivere la seguente porzione di codice:
// Esempio #01 var age = 42; var height = 1.72; console.log(typeof age);
number
La console ci restituisce number come risposta. Stesso output abbiamo con typeof height.
Quando proviamo ad assegnare un valore “anomalo” ad una una variabile, JavaScript tenta di convertirlo in un tipo di dati ammissibile. Ad esempio, se consideriamo il seguente script:
// Esempio #02 var pippo = "10" + 10; console.log(pippo);
1010
Alla variabile pippo, viene assegnata la somma di una stringa con un numero. In tal caso, JS converte il numero in stringa e restituisce la concatenazione delle due stringhe. La console mostra il risultato della conversione automatica dei tipi di dato.
Se proviamo a dividere un numero per una stringa, la console ci restituirà NaN , che in gergo vuole Not a Number, nel caso in cui non la stringa è non puramente numerica.
// Esempio #03 var pippo = 20 / "Robin"; var pluto = 20 / "12"; console.log(pippo); console.log(pluto);
NaN
1.6666666666666667
La variabile pluto, dà in output il risultato dalla divisione tra 20 e 12, quindi in tal caso è la stringa a denominatore ad essere convertita in numero.
Possiamo trasformare stringhe numeriche in numeri usando parseInt () per numeri interi o parseFloat () per numeri in virgola mobile.
// Esempio #04 var x = "79.99 Euro"; var price1 = parseInt(x); var price2 = parseFloat(x); console.log(price1 + " ---- " + price2);
79 —- 79.99
Il parsing è un processo di analisi e di elaborazione di una stringa. Le stringhe possono contenere caratteri non numerici purché inizino con un numero.
Possiamo utilizzare il metodo Math.round () per arrotondare un numero per eccesso o per difetto, avvicinandolo al numero intero più vicino.
//Esempio #05 var pi = 3.141592653589793; var number = Math.round(pi); console.log("pi arrotondato vale " + number);
pi arrotondato vale 3
Ricorda sempre che i valori inferiori a 0,5 verranno arrotondati per difetto e da 0,5 in su, verranno arrotondati per eccesso.
Math è un oggetto che contiene diverse costanti come Math.PI e metodi come Math.random () che possono aiutarci anche a risolvere problemi matematici.// Esempio #06 var number = Math.PI; var random = Math.random(); console.log(number); console.log(random);
3.141592653589793
0.45374651692506784
Math.PI è una costante, mentre Math.random () produce un numero casuale compreso tra 0 e 1.
Un altro oggetto, Date , ci consente di lavorare con date e ora. La differenza tra Date e Math è che, nel primo caso bisogna usare la parola new per creare una cosiddetta istanza.
// Esempio #07 var date = new Date("1985-10-21"); document.write(date);
Mon Oct 21 1985 01:00:00 GMT+0100 (Ora standard dell’Europa centrale)
Date, essendo un oggetto, ha un sacco di metodi che ci aiutano a sfruttarne le potenzialità.
// Esempio #08 var date = new Date("1985-10-21"); var year = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); console.log(year + "/" + month + "/" + day);
1985/10/21
Come si può vedere dal precedente esempio, getMonth () restituisce il mese iniziando a contare da 0, pertanto vi è la necessità di inserire +1 per avere la corrispondenza giusta.