Représentation approximative des nombres réels

Représentation approximative des nombres réels

En informatique, les nombres à virgule sont appelés des "nombres à virgule flottante". Contrairement aux entiers, leur représentation en machine est souvent une approximation, car certains nombres réels ne peuvent pas être codés de manière exacte en binaire avec un nombre fini de bits.

Définition : Virgule flottante (Standard IEEE 754)

Il s'agit d'une méthode de codage des nombres réels calquée sur la notation scientifique. Le nombre est décomposé en trois parties : un signe, une mantisse (les chiffres significatifs) et un exposant (qui détermine la position de la virgule).


I. La structure du codage

La plupart des systèmes modernes utilisent la norme IEEE 754. Pour un nombre codé sur 32 bits (précision simple), la répartition est la suivante :

  • 1 bit pour le signe (0 pour +, 1 pour -).

  • 8 bits pour l'exposant.

  • 23 bits pour la mantisse.

Exemple : Représentation mathématique

La valeur d'un nombre flottant suit la formule : Signe × Mantisse × 2Exposant


II. Le problème de la précision

Certains nombres décimaux très simples, comme 0,1, n'ont pas de représentation finie en binaire (leur développement est périodique : 0,00011001100...). La machine doit donc couper ce nombre, ce qui entraîne une petite erreur.

Définition : Erreur d'arrondi

L'erreur d'arrondi est la différence entre la valeur réelle d'un nombre et sa représentation stockée en machine. Ces erreurs peuvent s'accumuler lors de calculs répétés.

Exemple : L'erreur de calcul classique

En Python ou en JavaScript, si vous testez l'égalité 0.1 + 0.2 == 0.3, le résultat sera False car la somme stockée est légèrement différente de 0,3.


III. Précision simple vs Précision double

Pour limiter ces erreurs, on peut augmenter le nombre de bits alloués à la mantisse et à l'exposant.

  • Simple précision : 32 bits (environ 7 chiffres décimaux significatifs).

  • Double précision : 64 bits (environ 15 chiffres décimaux significatifs).

Exemple : Valeur maximale en 64 bits

En double précision, on peut représenter des nombres allant jusqu'à environ 1,8 × 10308.


IV. Conséquences pour le programmeur

À cause de ces approximations, il est fortement déconseillé de tester l'égalité stricte entre deux nombres flottants avec l'opérateur ==. On préfère vérifier si la différence entre les deux nombres est inférieure à un seuil très petit (appelé "epsilon").