Livre_silo 30 août 2013 16:32 Page 48
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
48
Informatique pour tous
2.3.4 Les arrondis
Il est rare que le résultat d’un calcul faisant intervenir deux nombres à virgule flottante
donne un résultat représentable exactement sur 64 bits. Même sans effectuer de calcul, les
nombres décimaux ne sont pour la plupart pas représentables exactement dans ce format.
Par exemple, le nombre 0, 4 admet pour développement en base 2 :
1
2 2 +
1
2 3 +
1
2 6 +
1
2 7 +
1
2 10 +
1
2 11 +
1
2 14 +
1
2 15 + . . . = 0, 011001100110011 . . .
qui est un développement infini périodique.
Si l’on essaye de construire sa représentation sur 64 bits, on obtient :
signe
exposant
mantisse
bits non représentés
0
01111111101
1001100110011001... 1001100110011001
10011001...
La représentation en virgule flottante sera donc forcément une valeur approchée de ce
nombre. Par défaut, la norme IEEE 754 impose que les nombres à virgule soient arrondis
à la valeur représentable la plus proche. Ici, la valeur des bits non représentés est supérieure
à la moitié de la valeur du dernier bit de la mantisse, donc on arrondit la mantisse vers le
haut. On notera que cette opération est facile à effectuer, puisqu’il suffit d’arrondir vers
le haut si le premier bit non représenté vaut 1, vers le bas sinon. Seul cas particulier, si la
valeur des bits non représentés est exactement égale à la moitié de la valeur du dernier bit
de la mantisse, alors le nombre est arrondi de telle sorte que son dernier bit vaille 0.
La valeur approchée choisie pour 0, 4 est donc la suivante :
0, 011001100110011001100110011001100110011001100110011010
=
7 205 759 403 792 794
18 014 398 509 481 984
≃ 0, 400000000000000022204460492503
ATTENTION Représentation des décimaux en binaire
À cause de la base utilisée, il est impossible de représenter exactement la plupart des
nombres décimaux, plus précisément tous ceux qui ne s’écrivent pas sous la forme
k
2 n .
Des nombres qui habituellement ne posent pas de problème dans les calculs en mathématiques deviennent ainsi une source d’erreurs multiples.
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
48
Informatique pour tous
2.3.4 Les arrondis
Il est rare que le résultat d’un calcul faisant intervenir deux nombres à virgule flottante
donne un résultat représentable exactement sur 64 bits. Même sans effectuer de calcul, les
nombres décimaux ne sont pour la plupart pas représentables exactement dans ce format.
Par exemple, le nombre 0, 4 admet pour développement en base 2 :
1
2 2 +
1
2 3 +
1
2 6 +
1
2 7 +
1
2 10 +
1
2 11 +
1
2 14 +
1
2 15 + . . . = 0, 011001100110011 . . .
qui est un développement infini périodique.
Si l’on essaye de construire sa représentation sur 64 bits, on obtient :
signe
exposant
mantisse
bits non représentés
0
01111111101
1001100110011001... 1001100110011001
10011001...
La représentation en virgule flottante sera donc forcément une valeur approchée de ce
nombre. Par défaut, la norme IEEE 754 impose que les nombres à virgule soient arrondis
à la valeur représentable la plus proche. Ici, la valeur des bits non représentés est supérieure
à la moitié de la valeur du dernier bit de la mantisse, donc on arrondit la mantisse vers le
haut. On notera que cette opération est facile à effectuer, puisqu’il suffit d’arrondir vers
le haut si le premier bit non représenté vaut 1, vers le bas sinon. Seul cas particulier, si la
valeur des bits non représentés est exactement égale à la moitié de la valeur du dernier bit
de la mantisse, alors le nombre est arrondi de telle sorte que son dernier bit vaille 0.
La valeur approchée choisie pour 0, 4 est donc la suivante :
0, 011001100110011001100110011001100110011001100110011010
=
7 205 759 403 792 794
18 014 398 509 481 984
≃ 0, 400000000000000022204460492503
ATTENTION Représentation des décimaux en binaire
À cause de la base utilisée, il est impossible de représenter exactement la plupart des
nombres décimaux, plus précisément tous ceux qui ne s’écrivent pas sous la forme
k
2 n .
Des nombres qui habituellement ne posent pas de problème dans les calculs en mathématiques deviennent ainsi une source d’erreurs multiples.
