Aller au contenu

Numérique et sciences informatiques (spécialité) · Première

Les nombres réels en flottants : cours de Première NSI

Publié le 6 novembre 2026 · Mis à jour le 6 novembre 2026 · Signaler une erreur

L'essentiel

  • Un ordinateur ne peut pas représenter exactement tous les nombres réels : il en garde une approximation, d'aussi près qu'on veut mais jamais parfaite.1
  • La virgule flottante écrit un nombre comme en notation scientifique, en binaire : un signe, une mantisse et un exposant.2
  • L'ensemble des flottants est fini, et la mantisse a toujours le même nombre de chiffres significatifs : la précision relative est constante.2
  • Un nombre comme 1,1 a un développement binaire infini, coupé à la fin : d'où des erreurs d'arrondi et des résultats parfois inattendus.3
  • Conséquences en programmation : on ne compare pas deux flottants avec ==, on teste l'écart avec une tolérance, et l'ordre des additions peut changer le résultat.2

Introduction : un ordinateur ne connaît pas tous les réels

Tu as déjà vu en Python un calcul qui donne un résultat très légèrement faux, comme un 3.3000000000000003 là où tu attendais 3.3. Ce n'est pas un bogue du langage, et ce n'est pas non plus ta faute. C'est une conséquence directe de la façon dont la machine range les nombres à virgule dans sa mémoire.

Dans ce cours, tu vas comprendre cette représentation, appelée virgule flottante. Tu y retrouveras ce que tu sais déjà : l'écriture d'un entier en base 2 et la représentation des entiers relatifs. Il s'agit maintenant de ranger des nombres qui ne sont pas entiers.

Le fil conducteur est simple. La mémoire d'un ordinateur est finie : un nombre y occupe un nombre fixé de bits. Or il existe une infinité de nombres réels, et beaucoup d'entre eux ont une écriture infinie. Il faut donc accepter de ne garder qu'une approximation.

Le cours suit cet ordre : d'abord le problème (pourquoi approcher), puis la solution (la notation scientifique binaire), puis la conversion des parties décimales, et enfin les conséquences concrètes sur tes programmes.

Pourquoi il faut approcher les nombres réels

Un nombre réel peut avoir une infinité de chiffres après la virgule. Pense à 13=0,333…\frac{1}{3} = 0{,}333\ldots en base 10. Une machine qui n'a qu'un nombre limité de cases mémoire ne peut pas tout écrire. Les documents de calcul scientifique le disent sans détour : il est impossible de représenter exactement tous les nombres réels.1

La bonne nouvelle, c'est qu'on peut approcher n'importe quel réel d'aussi près qu'on le souhaite.1 Cette idée est ancienne. Les nombres décimaux, c'est-à-dire les nombres qui s'écrivent avec un nombre fini de chiffres après la virgule, servent précisément à approcher n'importe quel réel et à calculer avec ces valeurs comme on le fait avec les entiers.3 Leur emploi s'est diffusé peu à peu : d'abord dans le monde arabe aux alentours du Xe siècle, puis en Europe jusqu'au XVIe siècle, où Viète et Stevin ont contribué à le populariser. Cette évolution a fini par déboucher sur le système métrique, adopté au moment de la Révolution française.3

Tout l'enjeu de ce cours est de savoir quelle approximation la machine choisit, avec combien de chiffres, et ce que cela change pour les calculs.

Une analogie utile : quand tu mesures une longueur avec une règle graduée en millimètres, tu ne peux pas annoncer une valeur plus fine que le millimètre. La règle impose une précision. L'ordinateur est dans la même situation, sauf que sa graduation est binaire et que son nombre de graduations est fixé à l'avance.

Virgule fixe et virgule flottante

Il existe deux grandes façons de ranger un nombre à virgule. La première est la virgule fixe : on décide une fois pour toutes combien de chiffres se trouvent après la virgule. La représentation en virgule fixe indique un nombre entier d'un sous-multiple de l'unité. Par exemple, 1234,5671234{,}567 est une façon commode d'écrire 12341234 et 567567 millièmes, soit 1 234 5671\,234\,567 millièmes.2

La seconde est la virgule flottante. Il s'agit d'une méthode d'écriture très utilisée dans les ordinateurs, régie par la norme IEEE 754, qui équivaut à la notation scientifique en numération binaire.2 La virgule « flotte » : sa position n'est pas fixée, c'est un exposant qui la décale.

Virgule fixe et virgule flottante
CritèreVirgule fixeVirgule flottante
PrincipeNombre entier d'un sous-multiple de l'unitéNotation scientifique en binaire
Position de la virguleFixée à l'avanceDécalée par l'exposant
Intervalle de valeursPlus restreintPlus étendu à nombre de bits égal
Chiffres significatifsVariables selon la taille du nombreToujours le même nombre
Virgule fixe et virgule flottante

Signe, mantisse, exposant : la notation scientifique binaire

Rappelle-toi la notation scientifique en base 10 : le nombre −5,2×103-5{,}2 \times 10^{3} se lit comme un signe (−-), des chiffres significatifs (5,25{,}2) et une puissance de la base (10310^3). La virgule flottante fait exactement la même chose, mais en base 2.

Il reste une conséquence capitale : le nombre de bits réservés à la mantisse est limité. L'ensemble des flottants est un ensemble fini, dont le nombre d'éléments dépend de la base de représentation et du nombre de chiffres de la mantisse et de l'exposant.2 On le note parfois F(β,r,m,M)F(\beta, r, m, M), où β\beta est la base et rr le nombre de chiffres de la mantisse, mm et MM bornant l'exposant.1

Les trois éléments d'un flottantTrois étapes : le signe, la mantisse et l'exposant, qui s'assemblent pour former le nombre.1Signe0 pour un nombre positif, 1 pour négatif2MantisseChiffres significatifs, de la forme 1,b1b2b3…3ExposantPuissance de 2 qui décale la virgule
  1. Signe0 pour un nombre positif, 1 pour négatif
  2. MantisseChiffres significatifs, de la forme 1,b1b2b3…
  3. ExposantPuissance de 2 qui décale la virgule
Les trois éléments d'un flottant

Convertir une partie décimale en binaire

Pour la partie entière, tu connais déjà la méthode des divisions successives par 2. Pour la partie après la virgule, on fait l'inverse : on multiplie par 2 et on note la partie entière obtenue à chaque fois.

Convertir une partie fractionnaireQuatre étapes pour convertir la partie après la virgule en binaire par multiplications successives par 2.1Multiplier par 2Calculer 2f, où f est la partie fractionnaire2Noter le chiffreLa partie entière de 2f vaut 0 ou 13Garder le resteNouveau f : la partie fractionnaire de 2f4RecommencerArrêt si f = 0 ou si f déjà vu
  1. Multiplier par 2Calculer 2f, où f est la partie fractionnaire
  2. Noter le chiffreLa partie entière de 2f vaut 0 ou 1
  3. Garder le resteNouveau f : la partie fractionnaire de 2f
  4. RecommencerArrêt si f = 0 ou si f déjà vu
Convertir une partie fractionnaire
Démonstration · Pourquoi 0,1 ne peut pas avoir d'écriture binaire finie

Supposons qu'on ait 0,1=k2p0{,}1 = \frac{k}{2^p} avec kk entier et pp entier naturel (c'est ce que signifierait une écriture binaire finie). Alors 2p=10k2^p = 10k, donc 2p2^p serait un multiple de 1010, donc de 55. Or les seuls diviseurs premiers de 2p2^p sont 2. C'est contradictoire. Donc 0,10{,}1 n'a pas d'écriture binaire finie.

Erreurs d'arrondi : ce qui se passe vraiment en Python

Que fait la machine quand l'écriture binaire est infinie ? Elle coupe le développement après le nombre de chiffres que sa mantisse peut contenir, puis arrondit. Dans le format binaire double précision de la norme IEEE 754, qui est le plus courant, le codage de 1,11{,}1 coupe le développement à 52 chiffres binaires.3 L'erreur ainsi commise est une erreur d'arrondi.

Cette erreur est minuscule, mais elle existe, et elle peut produire des affichages inattendus, par exemple quand on calcule 3×1,13 \times 1{,}1 en Python.3 Les langages de programmation acceptent et affichent les nombres sous forme décimale, mais la plupart du temps ils calculent avec des flottants binaires, qui sont des approximations.3 Ce que tu tapes (1.1) et ce que la machine stocke ne sont donc pas tout à fait le même nombre.

Une autre conséquence concerne l'addition. Dans l'ensemble des réels, additionner (a+b)+c(a + b) + c ou a+(b+c)a + (b + c) donne le même résultat. Pour les flottants, ce n'est plus vrai : l'addition n'est pas associative, et l'ordre des calculs a donc de l'importance.2

Bilan : précision, intervalle et bonnes pratiques

Résumons ce que la représentation en flottants apporte et ce qu'elle coûte.

Carte du chapitreCarte mentale : au centre les flottants, avec quatre branches : structure, avantages, limites et bonnes pratiques.SigneMantisseExposantStructureGrand intervallePrécision constanteAvantagesEnsemble finiArrondisNon associatifLimitesToléranceEntiers exactsOrdre des calculsBonnes pratiquesFlottants

Flottants

  • Structure
    • Signe
    • Mantisse
    • Exposant
  • Avantages
    • Grand intervalle
    • Précision constante
  • Limites
    • Ensemble fini
    • Arrondis
    • Non associatif
  • Bonnes pratiques
    • Tolérance
    • Entiers exacts
    • Ordre des calculs
Carte du chapitre

Exercices corrigés

Exercice 1 Lire un nombre binaire à virgule

★☆☆Environ 5 min

Donne la valeur décimale du nombre binaire 0,110120{,}1101_2.

Indice 1

Chaque chiffre après la virgule a pour poids 12\frac{1}{2}, 14\frac{1}{4}, 18\frac{1}{8}, 116\frac{1}{16}, dans cet ordre.

Voir la correction pas à pas
  1. On repère les poids : le premier chiffre vaut 12\frac{1}{2}, le deuxième 14\frac{1}{4}, le troisième 18\frac{1}{8}, le quatrième 116\frac{1}{16}.

  2. Les chiffres de 0,110120{,}1101_2 sont 1, 1, 0, 1. On garde les poids des chiffres égaux à 1 : 12\frac{1}{2}, 14\frac{1}{4} et 116\frac{1}{16}.

  3. On additionne : 816+416+116=1316\frac{8}{16} + \frac{4}{16} + \frac{1}{16} = \frac{13}{16}.

  4. On convertit : 1316=0,8125\frac{13}{16} = 0{,}8125.

Le nombre 0,110120{,}1101_2 vaut 0,81250{,}8125 en décimal. Il est exactement représentable puisque son dénominateur est une puissance de 2.

Exercice 2 Trouver l'exposant d'un nombre

★★☆Environ 8 min

On écrit 6,56{,}5 sous la forme 1,m×2e1{,}m \times 2^e (mantisse comprise entre 1 et 2). Quelle est la valeur de l'exposant ee ? Donne ensuite la mantisse.

Indice 1

Cherche la plus grande puissance de 2 qui ne dépasse pas 6,56{,}5.

Indice 2

La mantisse est 6,52e\frac{6{,}5}{2^e}.

Voir la correction pas à pas
  1. On écrit les puissances de 2 : 21=22^1 = 2, 22=42^2 = 4, 23=82^3 = 8.

  2. On encadre : 4≤6,5<84 \leq 6{,}5 < 8, soit 22≤6,5<232^2 \leq 6{,}5 < 2^3. La plus grande puissance de 2 inférieure à 6,56{,}5 est 222^2, donc e=2e = 2.

  3. On calcule la mantisse : m=6,54=1,625m = \frac{6{,}5}{4} = 1{,}625.

  4. On convertit 1,6251{,}625 en binaire : 1+12+181 + \frac{1}{2} + \frac{1}{8}, donc 1,10121{,}101_2. On retrouve l'écriture 6,5=1,1012×226{,}5 = 1{,}101_2 \times 2^2.

L'exposant vaut 22 et la mantisse vaut 1,6251{,}625, soit 1,10121{,}101_2 en binaire.

Exercice 3 Mesurer une erreur d'arrondi

★★★Environ 15 min

On considère un format jouet qui garde, pour la mantisse 1,b1b2b3b41,b_1b_2b_3b_4, 4 chiffres binaires après la virgule, les suivants étant supprimés (troncature). On y stocke le nombre 0,10{,}1, qui s'écrit 1,6×2−41{,}6 \times 2^{-4} avec une mantisse décimale de 1,61{,}6.

Calcule l'erreur 0,1−x0{,}1 - x, où xx est la valeur réellement stockée.

Indice 1

Convertis 1,61{,}6 en binaire avec la méthode des multiplications par 2 sur 0,60{,}6.

Indice 2

Une fois la mantisse tronquée convertie en fraction, multiplie-la par 2−42^{-4}.

Voir la correction pas à pas
  1. On convertit 0,60{,}6 : 0,6×2=1,20{,}6 \times 2 = 1{,}2 (chiffre 1), 0,2×2=0,40{,}2 \times 2 = 0{,}4 (chiffre 0), 0,4×2=0,80{,}4 \times 2 = 0{,}8 (chiffre 0), 0,8×2=1,60{,}8 \times 2 = 1{,}6 (chiffre 1). On retrouve ensuite 0,60{,}6 et les chiffres se répètent : 1,6=1,1001 1001…21{,}6 = 1{,}1001\,1001\ldots_2.

  2. On tronque à 4 chiffres après la virgule : la mantisse stockée est 1,10012=1+12+116=25161{,}1001_2 = 1 + \frac{1}{2} + \frac{1}{16} = \frac{25}{16}.

  3. La valeur stockée est x=2516×2−4=25256x = \frac{25}{16} \times 2^{-4} = \frac{25}{256}.

  4. L'erreur est 0,1−25256=256−2502560=62560=0,002343750{,}1 - \frac{25}{256} = \frac{256 - 250}{2560} = \frac{6}{2560} = 0{,}00234375.

Le format jouet stocke 0,097656250{,}09765625 au lieu de 0,10{,}1, soit une erreur de 0,002343750{,}00234375 par défaut. Avec plus de chiffres dans la mantisse, l'erreur diminue mais ne s'annule jamais, car l'écriture de 0,10{,}1 est infinie.

Quiz

8 questions · correction immédiate · ton score reste sur ton appareil.

  1. Pourquoi un ordinateur ne peut-il pas représenter exactement tous les nombres réels ?

  2. Un nombre en virgule flottante est décrit par :

  3. Quelle propriété a la mantisse d'un flottant normalisé en base 2 ?

  4. Quels nombres ont une écriture binaire finie ?

    Plusieurs réponses possibles.

  5. Quelle est la valeur décimale de 0,101120{,}1011_2 ?

  6. Dans un programme, a == b est toujours fiable pour comparer deux flottants issus de calculs.

  7. Pour les flottants, l'addition est associative : (a+b)+c(a+b)+c donne toujours le même résultat que a+(b+c)a+(b+c).

  8. Quel avantage la virgule flottante a-t-elle sur la virgule fixe, à nombre de bits égal ?

Les questions qu'on se pose

Pourquoi 0,1 + 0,2 ne donne-t-il pas exactement 0,3 en Python ?

Parce que ni 0,10{,}1 ni 0,20{,}2 n'ont d'écriture binaire finie : la machine stocke deux approximations, chacune coupée après un nombre fixé de chiffres binaires.3 Leur somme porte la trace de ces deux arrondis, et le résultat peut différer très légèrement de la valeur stockée pour 0,30{,}3, qui est elle aussi une approximation. Ce n'est pas un bogue de Python, mais la conséquence du codage binaire des décimaux.

À quoi sert d'avoir un exposant ?

L'exposant décale la virgule, comme le fait 10310^3 en notation scientifique. Grâce à lui, avec le même nombre de bits, on peut écrire à la fois de très petits et de très grands nombres.2 Sans exposant (virgule fixe), il faudrait choisir à l'avance une précision unique, donc sacrifier soit les petites valeurs, soit les grandes.

Comment savoir si un nombre décimal est exactement représentable en binaire ?

Écris-le sous forme de fraction irréductible. S'il peut s'écrire k2p\frac{k}{2^p}, c'est-à-dire si le dénominateur est une puissance de 2, son écriture binaire est finie, donc il est représentable exactement tant que sa mantisse tient dans les bits disponibles. Exemple : 0,375=380{,}375 = \frac{3}{8} est exact, alors que 0,1=1100{,}1 = \frac{1}{10} ne l'est pas.

Faut-il toujours se méfier des flottants ?

Non. Pour la plupart des calculs scientifiques, l'erreur d'arrondi est très petite devant les incertitudes des données elles-mêmes, et les flottants sont efficaces. Il faut surtout éviter deux pièges : comparer avec == des résultats de calculs, et utiliser des flottants pour des quantités qui doivent être exactes (comptes en centimes, par exemple, qu'on range plutôt dans des entiers).

Est-ce que ce chapitre tombe au bac de NSI ?

La représentation des nombres en machine fait partie des notions de base de la spécialité. Des questions peuvent demander de convertir un nombre en binaire, de reconnaître qu'une écriture est infinie, ou d'expliquer pourquoi un test d'égalité entre flottants échoue. Savoir justifier par la forme k2p\frac{k}{2^p} est une réponse solide.

Sources

  1. Arithmétique des ordinateurs - Représentation en virgule flottante, CNRS (Calcul). Consulté le 6 novembre 2026.
  2. Virgule flottante, Wikipédia. Consulté le 6 novembre 2026.
  3. Nombre décimal, Wikipédia. Consulté le 6 novembre 2026.

Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.

Signaler une erreur sur cette page

Je suis en…

Primaire

  • CP Bientôt
  • CE1 Bientôt
  • CE2 Bientôt
  • CM1 Bientôt
  • CM2 Bientôt

Collège

Lycée

Supérieur

  • BTS Bientôt
  • BUT Bientôt
  • Licence Bientôt
  • Prépas Bientôt

Sur cette page