Adloun

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

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 →