Partie 3 : Représentation des nombres réels (flottants)
1. Le problème : les nombres réels en machine
Section intitulée « 1. Le problème : les nombres réels en machine »Les entiers se représentent de manière exacte en binaire. Mais les nombres à virgule posent un problème fondamental : il est impossible de représenter tous les nombres réels avec un nombre fini de bits.
En effet, entre deux nombres réels quelconques, il existe une infinité d'autres nombres réels. Avec un nombre fini de bits, on ne peut coder qu'un nombre fini de valeurs. La représentation sera donc forcément approximative dans la plupart des cas.
2. La notation scientifique : un point de départ
Section intitulée « 2. La notation scientifique : un point de départ »En mathématiques et en sciences, on utilise la notation scientifique pour écrire les très grands ou très petits nombres. Le principe est de séparer le nombre en deux parties :
- Un nombre compris entre 1 et 10 appelé la mantisse ;
- Une puissance de 10 appelée l'exposant.
| Nombre | Notation scientifique | Mantisse | Exposant |
|---|---|---|---|
| 3 750 | 3,75 × 10³ | 3,75 | 3 |
| 0,0042 | 4,2 × 10⁻³ | 4,2 | -3 |
| 602 200 000 000 000 000 000 000 | 6,022 × 10²³ | 6,022 | 23 |
La virgule « flotte » en se déplaçant grâce à l'exposant : c'est l'origine du terme nombre flottant ou virgule flottante.
3. La virgule flottante en binaire
Section intitulée « 3. La virgule flottante en binaire »Dans un ordinateur, le même principe est appliqué, mais en base 2. Un nombre flottant est stocké sous la forme :
signe × mantisse × 2^exposant^
L'ordinateur mémorise trois informations dans un nombre fixe de bits :
| Composante | Rôle |
|---|---|
| Signe | 1 bit : 0 pour positif, 1 pour négatif |
| Exposant | Détermine l'ordre de grandeur (la position de la virgule) |
| Mantisse | Les chiffres significatifs du nombre |
4. Fractions binaires
Section intitulée « 4. Fractions binaires »Tout comme on peut écrire des nombres à virgule en base 10, on peut le faire en base 2. Les positions après la virgule correspondent aux puissances négatives de 2 :
| Position | ... | 2¹ | 2⁰ | , | 2⁻¹ | 2⁻² | 2⁻³ | 2⁻⁴ | ... |
|---|---|---|---|---|---|---|---|---|---|
| Valeur | ... | 2 | 1 | , | 0,5 | 0,25 | 0,125 | 0,0625 | ... |
Quelques exemples de conversion
Section intitulée « Quelques exemples de conversion »Méthode systématique : multiplications successives par 2
Section intitulée « Méthode systématique : multiplications successives par 2 »Pour convertir la partie décimale d'un nombre en binaire, on peut aussi procéder par multiplications successives par 2 en ne gardant que la partie entière à chaque étape :
5. Les erreurs d'arrondi
Section intitulée « 5. Les erreurs d'arrondi »Puisque la mantisse a un nombre fini de bits, les nombres qui ont une représentation binaire infinie sont tronqués. Cette troncature provoque des erreurs d'arrondi.
5.1 Le piège classique : 0,1 + 0,2
Section intitulée « 5.1 Le piège classique : 0,1 + 0,2 »>>> 0.1 + 0.20.30000000000000004
>>> 0.1 + 0.2 == 0.3FalseCe résultat surprenant n'est pas un bug de Python. C'est une conséquence directe du fait que ni 0,1, ni 0,2, ni 0,3 ne peuvent être représentés exactement en binaire. Les petites erreurs d'arrondi s'accumulent.
5.2 Autres exemples
Section intitulée « 5.2 Autres exemples »>>> 0.1 + 0.1 + 0.10.30000000000000004
>>> 1/30.3333333333333333
>>> 1/3 + 1/3 + 1/31.0 # ici, Python compense l'erreur
>>> 0.1 * 30.30000000000000004
>>> 0.1 * 101.00000000000000025.3 Accumulation des erreurs
Section intitulée « 5.3 Accumulation des erreurs »Les erreurs d'arrondi sont infimes pour un seul calcul, mais elles peuvent s'accumuler au fil de nombreuses opérations :
>>> somme = 0.0>>> for i in range(1000):... somme += 0.001>>> somme0.9999999999999062 # au lieu de 1.0Après 1 000 additions de 0,001, le résultat n'est pas exactement 1.
6. Règles à respecter avec les flottants
Section intitulée « 6. Règles à respecter avec les flottants »7. Quels nombres sont représentés exactement ?
Section intitulée « 7. Quels nombres sont représentés exactement ? »Un nombre décimal est représentable exactement en binaire si et seulement si il peut s'écrire sous la forme d'une fraction dont le dénominateur est une puissance de 2.
| Nombre | Fraction | Dénominateur est une puissance de 2 ? | Exact en binaire ? |
|---|---|---|---|
| 0,5 | 1/2 | Oui (2¹) | Oui |
| 0,25 | 1/4 | Oui (2²) | Oui |
| 0,75 | 3/4 | Oui (2²) | Oui |
| 0,125 | 1/8 | Oui (2³) | Oui |
| 0,1 | 1/10 | Non (10 = 2 × 5) | Non |
| 0,2 | 1/5 | Non (5 n'est pas une puissance de 2) | Non |
| 0,3 | 3/10 | Non | Non |
| 1/3 | 1/3 | Non | Non |
8. Résumé
Section intitulée « 8. Résumé »| Concept | Détail |
|---|---|
| Nombre flottant | Représentation approximative d'un nombre réel sous la forme signe × mantisse × 2^exposant^ |
| Erreurs d'arrondi | 0,1 + 0,2 ≠ 0,3 en machine : conséquence de la représentation binaire finie |
| Exactitude | Seules les fractions dont le dénominateur est une puissance de 2 sont exactes |
| Règle fondamentale | Ne jamais tester l'égalité de deux flottants avec == |
| Alternative | Utiliser une marge de tolérance : abs(a - b) < epsilon |
| Bonne pratique | Préférer les entiers quand c'est possible (centimes au lieu d'euros) |
© 2026 Corentin Dupont - LyCode
Créé avec Astro Starlight