Adloun

JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 2 · Exercice de TD

Arrondir un prix

Valeurs, types et opérateurs · niveau 3 (difficile)

Énoncé

Prévoir l'affichage. Pourquoi (1.005).toFixed(2) ne donne-t-il pas "1.01" ? En quoi la méthode des centimes évite-t-elle le problème ?


console.log(Math.round(2.5), Math.round(-2.5), Math.round(-2.6));
console.log((2.345).toFixed(2), (1.005).toFixed(2));
console.log(Math.round(1.005 * 100) / 100, 1.005 * 100);
console.log((1.005).toPrecision(20));

Corrigé


3 -2 -3
2.35 1.00
1 100.49999999999999
1.0049999999999998934

Math.round arrondit les demis vers le haut : donne . Le flottant le plus proche de 1,005 est 1,00499999999999989…, que toPrecision(20) révèle : il est sous la moitié, toFixed(2) donne donc "1.00", et le produit par 100 donne 100,4999…, arrondi à 100. À l'inverse, 2,345 est stocké un peu au-dessus et donne "2.35". Avec des centimes entiers, on n'arrondit qu'une fois, à la saisie (Math.round(prix * 100)), et ce qui suit est exact.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →