Ces fonctions ne sont pas des méthodes de Math.
isNaN(x) : renvoie true si x n'est pas un nombre, false sinon
isFinite(x) : renvoie true si x est un nombre que JS peut traiter, false sinon
parseInt(str) : convertit la chaîne str en entier
parseFloat(str) : convertit la chaîne str en flottant.
Nos propres fonctions
Nous allons créer…
arrondir(x,n) pour arrondir x en gardant n chiffres après la virgule
randomInt(mini, maxi) pour générer un entier aléatoire entre mini et maxi.
Fonction basiques
abs(x)
Description
Renvoie la valeur absolue de x.
Exemple
La distance entre deux nombres (qui est simplement la valeur absolue de leur différence) :
Code : JavaScript
1 function distance(x,y)
2 {
3 return Math.abs(x-y);
4 }
Si on veut tester : ce code affichera
4, puis
2.
Code : JavaScript
1 alert(distance(1,5));
2 alert(distance(4,2));
min(x, y)
Description
Renvoie le plus petit nombre parmi x et y.
Exemple
Ce code affichera
3 :
Code : JavaScript
1 alert(Math.min(3,5));
max(x, y)
Description
Renvoie le plus grand nombre parmi x et y.
Exemple
Ce code affichera
5 :
Code : JavaScript
1 alert(Math.max(3,5));
Arrondir
 |
Ces fonctions arrondissent à l'unité.
A la fin du chapitre, on créera une fonction pour arrondir avec une meilleure précision. |
round(x)
Description
Renvoie x arrondi à l'entier le plus proche.
Exemple
Ce code affichera
3, puis
-1 :
Code : JavaScript
1 alert(Math.round(3.14));
2 alert(Math.round(-1.234));
floor(x)
Description
Renvoie x arrondi à l'entier inférieur ou égal.
Exemple
Ce code affichera
3, puis
-2 :
Code : JavaScript
1 alert(Math.round(3.14));
2 alert(Math.round(-1.234));
ceil(x)
Description
Renvoie x arrondi à l'entier supérieur ou égal.
Exemple
Ce code affichera
4, puis
-1 :
Code : JavaScript
1 alert(Math.round(3.14));
2 alert(Math.round(-1.234));
Trigonométrie
sin(x)
Description
La fonction sinus.
L'angle est à indiquer en radians.
Exemple
Ce code affichera
0 :
Code : JavaScript
1 alert(Math.sin(0));
cos(x)
Description
La fonction cosinus.
L'angle est à indiquer en radians.
Exemple
Ce code affichera
1 :
Code : JavaScript
1 alert(Math.cos(0));
tan(x)
Description
La fonction tangente.
L'angle est à indiquer en radians.
Exemple
Ce code affichera
0 :
Code : JavaScript
1 alert(Math.tan(0));
asin(x)
Description
La fonction arc sinus ou Arcsin.
Exemple
Ce code affichera la valeur de
pi/2 :
Code : JavaScript
1 alert(Math.asin(1));
acos(x)
Description
La fonction arc cosinus ou Arccos.
Exemple
Ce code affichera la valeur de
pi/2 :
Code : JavaScript
1 alert(Math.acos(0));
atan(x)
Description
La fonction arc tangente ou Arctan.
Exemple
Ce code affichera la valeur de
pi/4 :
Code : JavaScript
1 alert(Math.atan(1));
Autres fonctions usuelles
exp(x)
Description
La fonction exponentielle (en base e).
Exemple
Code : JavaScript
1 alert("exp(-1) vaut " + Math.exp(-1));
log(x)
Description
La fonction logarithme népérien).
Remarque
Noter que la fonction logarithme décimal n'est pas définie, ce sera à nous de le faire en cas de besoin. Il en est de même pour un logarithme en base b quelconque.
On peut pour cela utiliser les constantes LN10, LN2, LN10E (logarithme décimal de e) et LN2E (logarithme en base 2 de e) de notre objet Math.
Exemple
Code : JavaScript
1 var LN3 = Math.log(3);
2 alert("ln(3) vaut " + LN3);
Si on veut définir notre logarithme décimal :
Code : JavaScript
1 function log10(x)
2 {
3 return Math.LOG10E * Math.log(x);
4 }
pow(x,y)
Description
Retourne x à la puissance y.
Exemple
Si on veut définir la fonction
cube à partir de
pow :
Code : JavaScript
1 function cube(x)
2 {
3 return Math.pow(x,3);
4 }
sqrt(x)
Description
La fonction radical (parfois appelée racine carrée par abus de langage).
Exemple
Cet exemple affichera
3 :
Code : JavaScript
1 alert(Math.sqrt(9));
Voici la norme
euclidienne d'un vecteur
du plan :
Code : JavaScript
1 function norme(x,y)
2 {
3 return Math.sqrt(x*x + y*y);
4 }
Inclassables
PI
Description
La constante pi. Attention, le nom s'écrit bien en majuscules (comme c'est souvent le cas pour des constantes).
Exemple
Code : JavaScript
1 alert("Pi vaut environ " + Math.PI);
random()
Description
Renvoie un nombre aléatoire de l'intervalle
[0;1[ ; autrement dit, un nombre compris entre
0 (inclus) et
1 (exclus).
 |
Cette fonction est difficilement utilisable ainsi.
A la fin du chapitre, on créera une fonction pour générer un entier aléatoire compris entre les deux arguments de cette fonction. |
Exemple
Code : JavaScript
1 alert("Un nombre aléatoire : " + Math.random());
Fonctions indépendantes de l'objet "Math"
 |
Ces fonctions ne font pas partie de l'objet Math !
Cependant, comme elles se rapprochent du thème de ce chapitre, on en parle ici. |
isNaN()
Description
Renvoie true si x n'est pas un nombre, false sinon.
Utile avant d'utiliser les fonctions mathématiques.
Exemple
Code : JavaScript
1 var x = prompt("Entrez un nombre");
2 if(isNaN(x))
3 alert("Ce n'est pas un nombre");
4 else
5 alert("Le carré de " + " est " + x*x);
isFinite(x)
Description
Renvoie true si x est un nombre que JS peut traiter, false sinon (par exemple, pour un nombre trop grand pour être supporté par JS).
Exemple
On va créer un nombre trèèès grand.
Code : JavaScript
1 var x = Math.pow(111,222);
2 if(isFinite(x))
3 alert("111 puissance 222 vaut " + x);
4 else
5 alert("C'est trop grand !");
parseInt(str)
Description
Convertit la chaîne de caractères str en nombre entier.
Renvoie NaN (Not a Number) si la conversion échoue.
Exemple
Code : JavaScript
1 var a = parseInt("12h30");
2 var b = parseInt("-3.14");
3 var c = parseInt("Euh…");
Dans cet exemple, les variables vaudront respectivement
12 (la conversion s'arrête au "
h"),
-3 (car on convertit en entier, donc on s'arrête au .) et
NaN.
parseFloat(str)
Description
Convertit la chaîne de caractères str en nombre à virgule.
Renvoie NaN (Not a Number) si la conversion échoue.
Exemple
Code : JavaScript
1 var a = parseFloat("-3.14");
2 var b = parseFloat("1.5m");
3 var c = parseFloat("3,14");
Dans cet exemple, les variables vaudront respectivement
-3.14,
1.5 (la conversion s'arrête au "
m") et
3 (il faut utiliser le point, et non la virgule).
Nos propres fonctions
Nous allons créer quelques fonctions supplémentaires (à partir de celles existantes).
arrondir(x, n)
Ce qu'on veut…
On veut arrondir
x, mais en gardant
n chiffres après la virgule.
Par exemple :
Code : Autre
1 arrondir(3.14, 1) = 3.1
2 arrondir(2.718, 2) = 2.72
3 arrondir(1.234, 0) = 1
Comment faire ?
La fonction dont on dispose pour arrondir un nombre est
Math.round.
Le souci, c'est qu'elle arrondit à l'unité ; autrement dit, à l'endroit où se situe la virgule, comme ceci :
3.14159 ->
3
Ce qu'on veut, c'est arrondir "plus loin que la virgule", comme dans cet exemple :
3.14159 ->
3.14
En fait, ce qu'il faudrait, c'est déplacer la virgule, pour pouvoir arrondir avec
Math.round, et ensuite remettre la virgule au bon endroit…
 |
Comment faire pour déplacer une virgule ? |
Pour la déplacer de
n crans, on multiplie par 10…00 (un "1" suivit de
n "0"), autrement dit, par 10 puissance
n.
Pour déplacer vers la gauche, on divise par ce même nombre.
Allons-y
On crée notre fonction sans problème :
Code : JavaScript
1 function arrondir(x, n)
Calculons maintenant
10 puissance n, qui nous servira à décaler la virgule.
Code : JavaScript
1 var decalage = Math.pow(10, n);
Pour notre exemple arrondir(3.14159, 2),
cette variable vaudra donc 100.
On commence par décaler notre virgule à droite, en multipliant par ce nombre :
Code : JavaScript
1 x *= decalage;
Dans l'exemple,
x vaudra donc 314.159.
Ensuite, on arrondit :
Code : JavaScript
1 x = Math.round(x);
Désormais,
x vaut 314.
Et on remet la virgule à sa place, en la décalant à gauche :
Code : JavaScript
1 x /= decalage;
On a bien x = 3.14.
Il ne reste plus qu'à renvoyer ce résultat.
Code : JavaScript
1 return x;
Voici la fonction
La fonction complète est donc la suivante :
Code : JavaScript
1 function arrondir(x, n)
2 {
3 var decalage = Math.pow(10, n);
4 x *= decalage;
5 x = Math.round(x);
6 x /= decalage;
7 return x;
8 }
randomInt(mini, maxi)
Ce qu'on veut…
On veut un nombre entier aléatoire entre mini et maxi.
Comment faire ?
Pour l'instant, on ne sait récupérer des nombres aléatoires que dans l'intervalle [0;1[… on va donc en prendre un.
On le multiplie par : maxi + 1 - mini
Il se retrouve donc dans [0 ; maxi+1-mini[.
On lui ajoute mini.
Il est alors maintenant dans [mini ; maxi+1[.
Et on termine en arrondissant à l'entier inférieur, qui est au moins mini et au plus maxi (car strictement inférieur à maxi+1).
Voici la fonction
Code : JavaScript
1 function randomInt(mini, maxi)
2 {
3 var nb = mini + (maxi+1-mini)*Math.random();
4 return Math.floor(nb);
5 }