Per il supporto di funzioni matematiche JavaScript prevede l'oggetto Math
. A differenza dell'oggetto Number
che abbiamo già visto e di altri oggetti che vedremo in seguito, Math
non consente la creazione di nuove istanze. Possiamo pensare ad esso come ad una API. È un oggetto statico che mette a disposizione proprietà e metodi richiamabili da qualsiasi punto di uno script.
Proprietà di Math in JS
Le proprietà previste dall'oggetto rappresentano alcune costanti matematiche:
Proprietà | Descrizione |
---|---|
E |
La costante di Eulero, base dei logaritmi naturali, con un valore approssimativo di 2.718 |
LN2 |
Il logarimto di 2, con un valore approssimativo di 0,693 |
LN10 |
Il logaritmo di 10, con un valore approssimativo di 2,303 |
LOG2E |
Il logaritmo in base 2 della costante di Eulero, circa 1,443 |
LOG10E |
Il logaritmo in base 10 della costante di Eulero, circa 0,434 |
PI |
Il valore di pi greco, approssimativamente 3,14 |
SQRT1_2 |
La radice quadrata di 1/2, circa 0,707 |
SQRT2 |
La radice quadrata di 2, con un valore approssimativo di 1,414 |
Queste costanti sono utilizzabili come un qualsiasi valore numerico, come mostrato nel seguente esempio:
if (x > Math.PI) {
console.log("Valore maggiore di pi greco");
}
console.log("Il doppio di pi greco è " + Math.PI * 2)
I metodi di Math in JavaScript
I metodi dell'oggetto Math
rappresentano le più comuni funzioni matematiche. Abbiamo, ad esempio, i metodi max()
e min()
per ottenere il valore più grande o più piccolo in un insieme di numeri:
Math.max(89, 13, 6.4, 49, 87.2, 121, 40); //121
Math.min(89, 13, 6.4, 49, 87.2, 121, 40); //6.4
Per l'elevamento a potenza e la radice quadrata di un numero abbiamo rispettivamente i metodi pow()
e sqrt()
:
Math.pow(4, 3); //4³ = 64
Math.sqrt(144); //12
Per l'arrotondamento o l'approssimazione di valori decimali abbiamo i metodi:
Metodo | Descrizione |
---|---|
ceil() |
restituisce il più piccolo intero maggiore o uguale ad un numero |
floor() |
restituisce il più grande intero minore o uguale ad un numero |
round() |
effettua l'arrotondamento all'intero più vicino, in base al valore dell'ultima cifra decimale |
Math.ceil(3.4); //4
Math.floor(3.4) //3
Math.round(3.4) //3
Math.round(3.6) //4
Numeri causali, il metodo random()
Il metodo random()
genera un numero casuale compreso tra 0
e 1
. Combinando opportunamente questo metodo con il metodo floor()
è possibile generare interi casuali compresi tra un minimo ed un massimo arbitrari, come mostrato dalla seguente funzione:
function generaInteroCasuale(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
Altri metodi JS
Metodo | Descrizione |
---|---|
abs() |
restituisce calcolo del valore assoluto (senza segno) di un numero |
log() |
calcola il logaritmo naturale (in base E) di un numero |
sin() cos() tan() atan() |
Funzioni trigonometriche per calcolare rispettivamente il seno, il coseno e la tangente di un numero, fondamentali per gestire grafica |
Calcolo dell'angolo di un vettore rispetto all'origine
Interessante anche Math.atan2(y, x)
che ritorna l'arcotangente del quoziente tra y
e x
, in altre parole fornisce il coefficiente angolare, l'angolo o l'orientamento rispetto all'origine di un vettore (x,y)
. Molto utile soprattutto quando si lavora con la grafica.