Quel est le résultat de 'console.log(0.1 + 0.2 === 0.3)' en JavaScript?

Comprendre l'Inexactitude des Nombres Flottants en JavaScript

La bonne réponse à la question "Quel est le résultat de 'console.log(0.1 + 0.2 === 0.3)' en JavaScript?" est 'faux'. Pour comprendre pourquoi, il faut comprendre comment JavaScript gère les nombres à virgule flottante.

Les nombres à virgule flottante, ou 'floats', en informatique sont une bête étrange. Bien qu'ils soient indispensables pour traiter des nombres non entiers, leurs particularités peuvent causer certaines surprises. Un exemple de cela est la question posée ci-dessus : pourquoi console.log(0.1 + 0.2 === 0.3) retourne-t-il 'faux' en JavaScript ?

Le Défi de la Précision

Le problème réside dans la façon dont les ordinateurs stockent et traitent les nombres en virgule flottante. JavaScript, comme beaucoup d'autres langages de programmation, suit la norme IEEE 754 pour la représentation des nombres à virgule flottante. Cette norme est utile pour afficher une large gamme de valeurs, mais elle ne peut pas toujours représenter précisément toutes les valeurs numériques.

Dans le cas de JavaScript, le résultat de 0.1 + 0.2 n'est pas exactement 0.3. Il s'agit d'un nombre légèrement plus grand que 0.3, à cause des erreurs d'arrondi lors de la conversion entre les bases binaires et décimales. Par conséquent, lorsque JavaScript évalue console.log(0.1 + 0.2 === 0.3), il retourne 'faux' parce que les deux côtés de === ne sont pas strictement égaux.

Pratiques Recommandées

Lorsque vous travaillez avec des flottants en JavaScript, il est essentiel d'être conscient de ces inexactitudes potentielles. Si vous avez besoin de comparer deux nombres à virgule flottante, une bonne pratique est d'éviter l'égalité stricte (===). À la place, vérifiez si la différence absolue entre les deux nombres est inférieure à un certain 'epsilon', qui représente une tolérance pour l'erreur.

Voici un exemple d'utilisation de cette technique pour faire une comparaison plus sensible des flottants:

function numbersAreCloseEnough(num1, num2, epsilon = 0.000001) {
  return Math.abs(num1 - num2) < epsilon;
}

console.log(numbersAreCloseEnough(0.1 + 0.2, 0.3));  // Renvoie 'true'

En somme, la gestion des nombres à virgule flottante en JavaScript peut être délicate. Il est donc important de bien comprendre ces problématiques et de suivre les meilleures pratiques afin d'éviter les surprises et les erreurs potentielles.

Related Questions

Trouvez-vous cela utile?