Arithmétique des ordinateurs

Dans de nombreux langages, pourquoi la comparaison en double précision 0.1 + 0.2 == 0.3 est-elle fausse ?

  1. AParce que l'instruction d'addition ne calcule pas toujours correctement les sommes décimales
  2. BParce que 0.3 est une valeur spéciale non représentable en virgule flottante et que la comparaison est toujours fausse
  3. CParce que chaque valeur est représentée par une approximation arrondie et que les erreurs les rendent légèrement différentes
Afficher la réponse et l'explication

Réponse : C. Parce que chaque valeur est représentée par une approximation arrondie et que les erreurs les rendent légèrement différentes

0,1, 0,2 et 0,3 ne sont pas représentables exactement en binaire et sont chacun arrondis à la valeur la plus proche. La somme arrondie des approximations de 0,1 et 0,2 vaut 0.30000000000000004, qui diffère au dernier chiffre de l'approximation de 0,3, 0.29999999999999998…. On compare donc généralement des flottants en vérifiant si la valeur absolue de leur différence est inférieure à une petite tolérance. L'instruction d'addition arrondit correctement selon la norme, et 0,3 est représentable comme approximation.

S'entraîner sur ce thème Retour au thème

Autres questions sur Arithmétique des ordinateurs

  1. Quel est l'epsilon machine de la simple précision IEEE 754 (différence entre 1 et le plus petit nombre représentable supérieur à 1) ?
  2. Quelle combinaison donne correctement le nombre approximatif de chiffres décimaux significatifs fiables en simple et double précision ?
  3. Quel est le rôle des nombres dénormalisés (sous-normaux) d'IEEE 754 ?
  4. Sur certains processeurs, les calculs comportant beaucoup de nombres dénormalisés peuvent être fortement ralentis. Quel réglage est utilisé lorsque la performance prime ?
  5. En arithmétique flottante IEEE 754, quel résultat la norme prévoit-elle pour la division d'un nombre positif par 0 ?