Aller au contenu

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

Nombres flottants : exercices corrigés de Première NSI

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

L'essentiel

  • Un flottant s'écrit comme une notation scientifique en binaire : une mantisse et un exposant 2.
  • L'ensemble des flottants est fini : la plupart des réels ne sont représentés qu'approximativement 12.
  • Un nombre comme 1,1 a un développement binaire infini, coupé au stockage : d'où des erreurs d'arrondi 3.
  • L'addition de flottants n'est pas associative : l'ordre des calculs compte 2.

Comment utiliser ces exercices

Ces exercices suivent la progression du cours : d'abord l'écriture d'un nombre en binaire, puis la notation « mantisse × 2^exposant », enfin les erreurs que cette représentation provoque. Cherche chaque exercice sur papier avant d'ouvrir les indices, puis compare avec la correction pas à pas.

Les exercices

Exercice 1 Virgule fixe : compter en millièmes

★☆☆Environ 5 min

Dans une représentation en virgule fixe, on stocke un entier qui compte des millièmes. Quel entier faut-il stocker pour représenter le nombre 52,30852{,}308 ? Explique ensuite pourquoi cette méthode limite l'intervalle des valeurs possibles avec un nombre de bits donné, par rapport à la virgule flottante.

Indice 1

Un millième vaut 0,0010{,}001 : combien de millièmes y a-t-il dans 11 ?

Indice 2

Décompose 52,30852{,}308 en 5252 unités et 308308 millièmes.

Voir la correction pas à pas
  1. Une unité contient 1000 millièmes, donc 5252 unités valent 52 00052\,000 millièmes.

  2. On ajoute les 308308 millièmes : 52 000+308=52 30852\,000 + 308 = 52\,308. C'est l'entier à stocker, exactement comme « 1234,567 » correspond à 1234567 millièmes 2.

  3. En virgule fixe, le pas entre deux valeurs est toujours le même (un millième). Avec le même nombre de bits, la virgule flottante peut couvrir un intervalle numérique plus large 2.

La virgule fixe est simple mais rigide : le pas est imposé. La virgule flottante adapte le pas à la taille du nombre grâce à l'exposant.

Exercice 2 Lire un nombre binaire à virgule

★☆☆Environ 5 min

Donne l'écriture décimale du nombre binaire 110,1012110{,}101_2.

Indice 1

Avant la virgule, les poids sont 44, 22, 11 de gauche à droite pour 110110.

Indice 2

Après la virgule, les poids sont 12\frac12, 14\frac14, 18\frac18.

Voir la correction pas à pas
  1. Partie entière : 1102=1×4+1×2+0×1=6110_2 = 1\times 4 + 1\times 2 + 0\times 1 = 6.

  2. Partie fractionnaire : 0,1012=1×12+0×14+1×18=0,5+0,125=0,6250{,}101_2 = 1\times\frac12 + 0\times\frac14 + 1\times\frac18 = 0{,}5 + 0{,}125 = 0{,}625.

  3. On additionne : 6+0,625=6,6256 + 0{,}625 = 6{,}625.

Un nombre binaire à virgule se lit comme un nombre décimal, avec des puissances de 2 (positives avant la virgule, négatives après).

Exercice 3 Mantisse et exposant

★☆☆Environ 8 min

Le nombre binaire 1011,0121011{,}01_2 doit être écrit sous la forme 1,xxxx×2e1{,}xxxx\times 2^e, comme une notation scientifique en base 2 2.

  1. Quelle est la mantisse et quel est l'exposant ee ?
  2. Quelle est la valeur décimale du nombre ?
Indice 1

Déplace la virgule jusqu'à ce qu'il ne reste qu'un seul chiffre non nul devant. Compte de combien de rangs tu l'as déplacée.

Indice 2

Pour la valeur, lis 1011,0121011{,}01_2 directement.

Voir la correction pas à pas
  1. On déplace la virgule de 3 rangs vers la gauche : 1011,012=1,011012×231011{,}01_2 = 1{,}01101_2\times 2^3.

  2. La mantisse est donc 1,011011{,}01101 et l'exposant vaut 33. La mantisse commence par un chiffre non nul, ici 1 2.

  3. Valeur : 10112=8+2+1=111011_2 = 8+2+1 = 11 et 0,012=14=0,250{,}01_2 = \frac14 = 0{,}25. Le nombre vaut 11,2511{,}25.

  4. Vérification : 1,011012=1+14+18+132=1,406251{,}01101_2 = 1 + \frac14 + \frac18 + \frac1{32} = 1{,}40625 et 1,40625×8=11,251{,}40625\times 8 = 11{,}25.

Déplacer la virgule de kk rangs vers la gauche revient à multiplier par 2k2^k, comme on multiplie par 10k10^k en notation scientifique décimale.

Exercice 4 Pourquoi 0,1 n'est pas exact

★★☆Environ 12 min

  1. Écris les 8 premiers chiffres après la virgule de 0,10{,}1 en binaire, avec la méthode des multiplications par 2.
  2. On coupe l'écriture après ces 8 chiffres. Quelle valeur décimale le nombre tronqué représente-t-il ?
  3. Calcule l'erreur commise par rapport à 0,10{,}1.
  4. Fais le lien avec le cas du nombre 1,11{,}1 évoqué dans la documentation 3.
Indice 1

Pars de 0,10{,}1, multiplie par 2 et note la partie entière. Tu retrouveras vite un motif qui se répète.

Indice 2

Le tronqué 0,0001100120{,}00011001_2 vaut 116+132+1256\frac{1}{16}+\frac{1}{32}+\frac{1}{256}.

Voir la correction pas à pas
  1. 0,1×2=0,20{,}1\times2=0{,}2 (chiffre 0) ; 0,2×2=0,40{,}2\times2=0{,}4 (0) ; 0,4×2=0,80{,}4\times2=0{,}8 (0) ; 0,8×2=1,60{,}8\times2=1{,}6 (1, reste 0,60{,}6) ; 0,6×2=1,20{,}6\times2=1{,}2 (1, reste 0,20{,}2) ; 0,2×2=0,40{,}2\times2=0{,}4 (0) ; 0,4×2=0,80{,}4\times2=0{,}8 (0) ; 0,8×2=1,60{,}8\times2=1{,}6 (1).

  2. Les 8 premiers chiffres sont donc 0001100100011001. Le reste 0,60{,}6 puis 0,20{,}2 revient : le motif 00110011 se répète à l'infini.

  3. Valeur tronquée : 16256+8256+1256=25256=0,09765625\frac{16}{256}+\frac{8}{256}+\frac{1}{256} = \frac{25}{256} = 0{,}09765625.

  4. Erreur : 0,1−0,09765625=0,002343750{,}1 - 0{,}09765625 = 0{,}00234375.

  5. Pour 1,11{,}1, la documentation indique que son écriture binaire est infinie : 1,0001100110011…1{,}0001100110011\ldots 3. Le format double précision coupe ce développement à 52 chiffres binaires, ce qui crée une erreur d'arrondi 3. Le principe est le même qu'ici, avec une erreur bien plus petite.

Un décimal « simple » comme 0,10{,}1 a un développement binaire infini. L'ordinateur n'en garde qu'une partie, donc il stocke une valeur voisine, pas la valeur exacte.

Exercice 5 Un petit format de flottants : le plus grand

★★☆Environ 10 min

On étudie un format imaginaire. Les nombres positifs représentables sont ceux de la forme 1,b1b2b3×2e1{,}b_1b_2b_3\times 2^e, où b1,b2,b3b_1,b_2,b_3 sont des chiffres binaires et où l'exposant ee est un entier compris entre −1-1 et 22 (inclus).

  1. Combien de nombres positifs différents ce format permet-il de représenter ?
  2. Quel est le plus grand ? Donne sa valeur décimale.
Indice 1

Compte les choix possibles pour la mantisse, puis ceux de l'exposant.

Indice 2

Le plus grand correspond à la mantisse maximale et à l'exposant maximal.

Voir la correction pas à pas
  1. Chaque chiffre bib_i a 2 choix, donc il y a 23=82^3 = 8 mantisses. Il y a 4 exposants (−1,0,1,2-1,0,1,2). Au total : 8×4=328\times4 = 32 nombres, ce qui illustre que l'ensemble des flottants est fini 2.

  2. Le plus grand a la mantisse 1,1112=1+12+14+18=1,8751{,}111_2 = 1+\frac12+\frac14+\frac18 = 1{,}875.

  3. On la multiplie par 22=42^2 = 4 : 1,875×4=7,51{,}875\times4 = 7{,}5.

Avec un nombre fixe de bits, il n'existe qu'un nombre fini de valeurs, donc un plus grand nombre et un plus petit nombre positif. Tout calcul qui dépasse ces bornes sort du format.

Exercice 6 Écart entre deux flottants consécutifs

★★☆Environ 10 min

On reprend le format de l'exercice précédent. Le nombre 55 s'écrit 1,0102×221{,}010_2\times2^2.

  1. Quel est le flottant suivant 55 dans ce format ? Quel est l'écart entre les deux ?
  2. Par quel flottant le nombre réel 5,35{,}3 sera-t-il remplacé, si l'on prend le plus proche ?
Indice 1

Pour passer au flottant suivant, ajoute 1 au dernier chiffre de la mantisse.

Indice 2

L'écart vaut 2e2^e fois le dernier poids de la mantisse, c'est-à-dire 18\frac18.

Voir la correction pas à pas
  1. Le suivant de 1,0102×221{,}010_2\times2^2 est 1,0112×221{,}011_2\times2^2, soit 1,375×4=5,51{,}375\times4 = 5{,}5.

  2. L'écart est 5,5−5=0,55{,}5-5 = 0{,}5, ce qui vaut aussi 22×182^2\times\frac18.

  3. Le réel 5,35{,}3 se trouve entre 55 et 5,55{,}5. Sa distance à 55 est 0,30{,}3, à 5,55{,}5 elle est 0,20{,}2.

  4. Il est donc remplacé par 5,55{,}5. Un flottant représente en fait un ensemble de réels voisins, dont les règles d'arrondi fixent les limites 2.

Plus l'exposant est grand, plus l'écart entre deux flottants consécutifs est grand. La précision relative, elle, reste à peu près la même, puisque la mantisse garde toujours le même nombre de chiffres significatifs 2.

Exercice 7 L'étrange résultat de 3 × 1,1

★★☆Environ 10 min

Un élève tape en Python le calcul 3 * 1.1 et s'attend à obtenir exactement 3,33{,}3. Il constate un affichage surprenant.

  1. Explique pourquoi le calcul peut ne pas donner exactement 3,33{,}3.
  2. Pourquoi l'affichage de 1.1 semble-t-il pourtant correct ?
Indice 1

Pense à la façon dont 1.1 est stocké.

Indice 2

Les langages lisent et écrivent les nombres en décimal, mais calculent autrement.

Voir la correction pas à pas
  1. Le nombre 1,11{,}1 s'écrit en binaire 1,0001100110011…1{,}0001100110011\ldots, avec une infinité de chiffres 3.

  2. Le format binaire double précision, le plus courant, coupe ce développement à 52 chiffres binaires 3. Python stocke donc une valeur très proche de 1,11{,}1, mais pas égale.

  3. Le produit par 3 multiplie cette petite erreur et subit un nouvel arrondi. Le résultat peut alors différer de 3,33{,}3 : la documentation parle de résultats parfois surprenants pour ce calcul 3.

  4. À l'entrée et à la sortie, les langages manipulent des nombres sous forme décimale, mais les calculs passent par des flottants binaires qui sont des approximations 3. C'est pourquoi 1.1 s'affiche correctement alors que la valeur stockée n'est pas exactement 1,11{,}1.

Le calcul n'est pas faux : il est effectué sur des approximations. Retiens qu'un test d'égalité entre deux résultats de calculs flottants est risqué.

Exercice 8 Quand l'ordre des additions change le résultat

★★★Environ 15 min

On utilise un format imaginaire où les nombres positifs s'écrivent 1,b1b2b3×2e1{,}b_1b_2b_3\times2^e avec ee entier de −2-2 à 33. Après chaque opération, le résultat exact est remplacé par le flottant le plus proche. On pose a=8a=8, b=0,375b=0{,}375 et c=0,375c=0{,}375 (ces trois nombres sont représentables).

  1. Calcule (a+b)+c(a+b)+c dans ce format.
  2. Calcule a+(b+c)a+(b+c) dans ce format.
  3. Quelle est la différence entre les deux résultats ? Quelle propriété de l'addition est mise en défaut ?
Indice 1

Entre 88 et 1616, l'exposant vaut 33 : quel est l'écart entre deux flottants consécutifs ?

Indice 2

Pour a+ba+b, regarde de quel entier 8,3758{,}375 est le plus proche.

Voir la correction pas à pas
  1. Pour e=3e=3, l'écart entre deux flottants vaut 23×18=12^3\times\frac18 = 1. Entre 88 et 1616, les flottants sont donc les entiers 8,9,10,…8, 9, 10,\ldots.

  2. a+b=8,375a+b = 8{,}375, plus proche de 88 que de 99 : le résultat est arrondi à 88. Ensuite 8+0,375=8,3758+0{,}375 = 8{,}375 est de nouveau arrondi à 88. Donc (a+b)+c=8(a+b)+c = 8.

  3. b+c=0,75b+c = 0{,}75, qui s'écrit 1,1002×2−11{,}100_2\times2^{-1} : il est représentable exactement. Puis a+0,75=8,75a+0{,}75 = 8{,}75, plus proche de 99 (distance 0,250{,}25) que de 88 (distance 0,750{,}75). Donc a+(b+c)=9a+(b+c) = 9.

  4. La différence vaut 9−8=19-8 = 1. L'associativité de l'addition est mise en défaut, comme le signale la documentation sur les flottants 2.

Dans l'ensemble des réels, (a+b)+c=a+(b+c)(a+b)+c = a+(b+c) toujours. Pour les flottants, l'ordre de calcul a de l'importance 2 : additionner d'abord les petits nombres entre eux limite les pertes.

Exercice 9 Comparer deux flottants avec une tolérance

★★★Environ 15 min

Une fonction doit dire si deux nombres flottants a et b sont « égaux » malgré les erreurs d'arrondi.

  1. Explique pourquoi le test a == b est mal adapté après des calculs.
  2. Écris en Python une fonction presque_egaux(a, b, eps) qui renvoie un booléen, avec une tolérance absolue eps.
  3. Dans quel cas une tolérance absolue est-elle mal adaptée ?
Indice 1

Pense à la valeur absolue de la différence a - b.

Indice 2

Imagine des nombres de l'ordre de dix milliards, puis de l'ordre de un millionième.

Voir la correction pas à pas
  1. Les calculs flottants travaillent sur des valeurs approchées 2. Deux calculs qui donnent le même résultat mathématique peuvent différer d'un tout petit écart, donc a == b peut renvoyer faux à tort.

  2. On teste la proximité : def presque_egaux(a, b, eps): return abs(a - b) <= eps.

  3. Une valeur comme eps = 1e-9 convient pour des nombres proches de 1. Pour des nombres de l'ordre de dix milliards, l'écart entre deux flottants consécutifs (environ 2×10−62\times10^{-6}) est bien plus grand que cette valeur : le test revient alors presque à une égalité stricte. Pour des nombres minuscules, la tolérance serait trop large. On préfère alors une tolérance relative, par exemple abs(a - b) <= eps * max(abs(a), abs(b)).

On ne teste pas l'égalité exacte de deux résultats de calculs flottants : on teste qu'ils sont proches, avec une tolérance adaptée à leur taille.

Les questions qu'on se pose

Pourquoi l'ordinateur ne peut-il pas représenter tous les nombres réels ?

Il dispose d'un nombre fini de bits, donc d'un ensemble fini de flottants 2. Il est impossible de représenter exactement tous les réels 1. On en garde une valeur approchée, aussi proche qu'on le souhaite si l'on ajoute des bits à la mantisse 1.

Comment savoir si un nombre décimal sera exact en binaire ?

Il est exact seulement s'il s'écrit comme une somme finie de puissances de 2, comme 0,625=12+180{,}625 = \frac12+\frac18. Des nombres comme 0,10{,}1 ont une écriture binaire infinie, périodique, et sont donc arrondis au stockage 3. Pour t'en assurer, applique la méthode des multiplications par 2 : si le reste ne tombe jamais à 0, l'écriture est infinie.

Est-ce que ces erreurs peuvent vraiment poser problème ?

Oui, dès qu'on compare des résultats avec == ou qu'on additionne beaucoup de termes de tailles très différentes, puisque l'addition n'est pas associative sur les flottants 2. D'où les bonnes pratiques de l'exercice sur la tolérance : comparer avec un écart admis plutôt qu'avec une égalité stricte.

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