• Facile

Ce cours est visible gratuitement en ligne.

Vous pouvez être accompagné et mentoré par un professeur particulier par visioconférence sur ce cours.

J'ai tout compris !

Mis à jour le 14/08/2017

L'objet "Math"

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

La visite guidée se poursuit avec un objet assez utile, dont le doux nom va en ravir certains, mais en effrayer d'autres. Voici l'objet... Math. :diable:

Il regroupe entre autres des fonctions mathématiques, plus ou moins utiles. Voyons tout cela sans plus tarder.

Sommaire

Fonctions basiques
  • abs(x) : valeur absolue

  • min(x,y) : plus petite valeur

  • max(x,y) : plus grande valeur.

Arrondir
  • round(x) : à l'entier le plus proche

  • floor(x) : à l'entier inférieur

  • ceil(x) : à l'entier supérieur.

  • À la fin du chapitre : création d'un arrondi plus précis.

Trigonométrie
  • sin(x)

  • cos(x)

  • tan(x)

  • asin(x)

  • acos(x)

  • atan(x).

Autres fonctions usuelles
  • exp(x)

  • log(x) : logarithme népérien

  • pow(x,y) : x puissance y

  • sqrt(x) : racine carrée.

Inclassables
  • PI : constante pi

  • random() : renvoie un nombre aléatoire de l'intervalle [0;1[

  • À la fin du chapitre : génération d'un entier aléatoire.

Fonctions indépendantes de l'objet "Math"

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.

Fonctions 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) :

function distance(x,y)
{
     return Math.abs(x-y);
}

Si on veut tester : ce code affichera 4, puis 2.

alert(distance(1,5));
alert(distance(4,2));

min(x, y)

Description

Renvoie le plus petit nombre parmi x et y.

Exemple

Ce code affichera 3 :

alert(Math.min(3,5));

max(x, y)

Description

Renvoie le plus grand nombre parmi x et y.

Exemple

Ce code affichera 5 :

alert(Math.max(3,5));

Arrondir

round(x)

Description

Renvoie x arrondi à l'entier le plus proche.

Exemple

Ce code affichera 3, puis -1 :

alert(Math.round(3.14));
alert(Math.round(-1.234));

floor(x)

Description

Renvoie x arrondi à l'entier inférieur ou égal.

Exemple

Ce code affichera 3, puis -2 :

alert(Math.floor(3.14));
alert(Math.floor(-1.234));

ceil(x)

Description

Renvoie x arrondi à l'entier supérieur ou égal.

Exemple

Ce code affichera 4, puis -1 :

alert(Math.ceil(3.14));
alert(Math.ceil(-1.234));

Trigonométrie

sin(x)

Image utilisateur
Description

La fonction sinus.
L'angle est à indiquer en radians.

Exemple

Ce code affichera 0 :

alert(Math.sin(0));

cos(x)

Image utilisateur
Description

La fonction cosinus.
L'angle est à indiquer en radians.

Exemple

Ce code affichera 1 :

alert(Math.cos(0));

tan(x)

Image utilisateur
Description

La fonction tangente.
L'angle est à indiquer en radians.

Exemple

Ce code affichera 0 :

alert(Math.tan(0));

asin(x)

Image utilisateur
Description

La fonction arc sinus, ou Arcsin.

Exemple

Ce code affichera la valeur de pi/2 :

alert(Math.asin(1));

acos(x)

Image utilisateur
Description

La fonction arc cosinus, ou Arccos.

Exemple

Ce code affichera la valeur de pi/2 :

alert(Math.acos(0));

atan(x)

Image utilisateur
Description

La fonction arc tangente, ou Arctan.

Exemple

Ce code affichera la valeur de pi/4 :

alert(Math.atan(1));

Autres fonctions usuelles

exp(x)

Image utilisateur
Description

La fonction exponentielle (en base e).

Exemple
alert("exp(-1) vaut " + Math.exp(-1));

log(x)

Image utilisateur
Description

La fonction logarithme népérien.

Remarque

Notez que la fonction logarithme décimal n'est pas définie, ce sera à vous de le faire en cas de besoin. Il en est de même pour un logarithme en base b quelconque.
Vous pouvez 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
var LN3 = Math.log(3);
alert("ln(3) vaut " + LN3);

Si on veut définir notre logarithme décimal :

function log10(x)
{
     return Math.LOG10E * Math.log(x);
}

pow(x,y)

Description

Retourne x à la puissance y.

Exemple

Si on veut définir la fonction cube à partir de pow :

function cube(x)
{
     return Math.pow(x,3);
}

sqrt(x)

Image utilisateur
Description

La fonction radical (parfois appelée racine carréepar abus de langage).

Exemple

Cet exemple affichera 3 :

alert(Math.sqrt(9));

Voici la norme euclidienne d'un vecteur du plan :

function norme(x,y)
{
    return Math.sqrt(x*x + y*y);
}

Inclassables

PI

Description

La fameuse constante pi.
Attention, le nom s'écrit bien en majuscules (comme c'est souvent le cas pour des constantes).

Exemple
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).

Exemple
alert("Un nombre aléatoire : " + Math.random());

Fonctions indépendantes de l'objet "Math"

isNaN(x)

Description

Renvoie true si x n'est pas un nombre, false sinon.
Utile avant d'utiliser les fonctions mathématiques.

Exemple
var x = prompt("Entrez un nombre");
if(isNaN(x))
     alert("Ce n'est pas un nombre");
else
     alert("Le carré de " + x + " 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. :D

var x = Math.pow(111,222);
if(isFinite(x))
     alert("111 puissance 222 vaut " + x);
else
     alert("C'est trop grand !");

parseInt(str)

Description

Convertit la chaîne de caractères str en nombre entier.
Renvoie NaN (Not aNumber) si la conversion échoue.

Exemple
var a = parseInt("12h30");
var b = parseInt("-3.14");
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 aNumber) si la conversion échoue.

Exemple
var a = parseFloat("-3.14");
var b = parseFloat("1.5m");
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

Comme annoncé dans ce chapitre, 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 :

arrondir(3.14, 1) = 3.1
arrondir(2.718, 2) = 2.72
arrondir(1.234, 0) = 1
Comment faire ?

La fonction dont nous disposons pour arrondir un nombre est Math.round.

Notre 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...

D'accord, mais comment on s'y prend pour déplacer une virgule ? o_O

Citation : cours de primaire

En multipliant par 10, on déplace la virgule d'un cran vers la droite.

Et 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.
Voilà, on a toutes les cartes en mains. :)

Allons-y

On crée notre fonction sans problème :

function arrondir(x, n)

Calculons maintenant 10 puissance n, qui nous servira à décaler la virgule.

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 :

x *= decalage;

Dans l'exemple,xvaudra donc 314.159.

Ensuite, on arrondit :

x = Math.round(x);

Désormais,xvaut314.

Et on remet notre virgule à sa place, en la décalant à gauche :

x /= decalage;

On a bienx= 3.14 :) .

Il ne reste plus qu'à renvoyer ce résultat.

return x;
Voici notre fonction

Notre fonction complète est donc la suivante :

function arrondir(x, n)
{
     var decalage = Math.pow(10, n);
     x *= decalage;
     x = Math.round(x);
     x /= decalage;
     return x;
}

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 notre fonction
function randomInt(mini, maxi)
{
        var nb = mini + (maxi+1-mini)*Math.random();
        return Math.floor(nb);
}

Et voilà, les mathématiques en JS n'ont maintenant plus de secrets pour vous. :)

Exemple de certificat de réussite
Exemple de certificat de réussite