JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 2 · Application directe du cours
Comparer des flottants
Valeurs, types et opérateurs · niveau 2
Énoncé
Prévoir l'affichage de ce programme et expliquer chaque ligne. Pourquoi convertir un prix de 1,15 € en centimes par prix * 100 est-il dangereux, et comment faire ?
const somme = 0.1 + 0.2;
console.log(somme === 0.3);
console.log(Math.abs(somme - 0.3) < 1e-9);
console.log(1.15 * 100);
console.log(Math.round(1.15 * 100));
console.log(4.35 * 100, Math.round(4.35 * 100));Corrigé
false
true
114.99999999999999
115
434.99999999999994 435
La somme n'est pas exactement le flottant 0,3 : la comparaison stricte échoue, la comparaison avec une tolérance réussit. 1,15 n'est pas représentable exactement ; le flottant stocké est un peu inférieur, et le produit par 100 donne 114,999… Le convertir en entier en coupant la partie décimale donnerait 114 centimes, un centime de moins. Il faut arrondir : Math.round(prix * 100), qui donne 115 (et 435 pour 4,35 €). Mieux encore : saisir et stocker les prix directement en centimes.
100 % gratuit
La suite du chapitre est sur Adloun
- 11 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.