Accueil |

Virgule flottante

 

Les nombres à  virgule flottante sont les nombres les plus souvent utilisés dans un ordinateur. Ce sont des approximations rationnelles de nombres réels.

Les nombres à  virgule flottante possèdent un signe s (dans {-1, 1}), une mantisse entière m (parfois appelée significande) et un exposant e. Un tel triplet représente un réel s.m.be o๠b est la base de représentation (parfois 2, mais aussi 16 pour des raisons de rapidité de calculs, ou éventuellement toute autre valeur). En faisant varier e, on fait « flotter » la virgule décimale. Généralement, m est d'une taille fixée.

Ceci s'oppose à  la représentation dite en virgule fixe, o๠l'exposant e est fixé.

Les différences de représentation interne des nombres flottants d'un ordinateur à  un autre obligeaient à  reprendre finement les programmes de calcul scientifique pour les porter d'une machine à  une autre jusqu'à  ce qu'un format normalisé soit proposé par l'IEEE.

Sommaire
1 Mises en Å“uvre
2 Précautions d'emploi
3 Lien externe

Mises en Å“uvre

Norme IEEE 754

La norme
IEEE 754 (reprise par la norme internationale IEC 60559) spécifie deux formats de nombres en virgule flottante et les opérations associées. La quasi-totalité des architectures d'ordinateurs actuelles, y compris IA32, PowerPC, et AMD64, incluent une implémentation matérielle des calculs sur flottants IEEE, directement dans le microprocesseur, garantissant une exécution rapide.

Les flottants IEEE peuvent être codés sur 32 bits ("simple précision") ou 64 bits ("double précision"). Il est aujourd'hui très rare que des programmes utilisent la simple précision, en tout cas sur station de travail. Certaines implémentations ajoutent un ou plusieurs types de précision supérieure (ainsi, IA32 a un type étendu sur 80 bits). La répartition des bits est la suivante :

  Signe Exposant Mantisse
Simple précision 1 bit 8 bits 23 bits
Double précision 1 bit 11 bits 52 bits

La valeur d'un nombre ainsi codé est donc :

(-1)S * (1 + M ) * 2(E-127) pour les nombres codés en simple précision
ou
(-1)S * (1 + M ) * 2(E-1023) pour les nombres codés en double précision

Flottants étendus

Lorsque les flottants IEEE offrent une précision insuffisante, on peut devoir recourir à  des calculs sur des flottants en précision supérieure. Citons notamment la bibliothèque MPFR, incluse dans
GNU MP.

Précautions d'emploi

Les calculs en virgule flottante sont pratiques, mais présentent trois désagréments : Il est par exemple tentant de réorganiser des expressions en virgule flottante comme on le ferait d'expressions mathématiques. Cela n'est cependant pas anodin, car les calculs en virgule flottante, contrairement aux calculs sur les réels, ne sont pas associatifss. Par exemple, dans un calcul en flottants IEEE double précision, (1050+1)-1050 ne donne pas 1, mais 0. La raison est que 1050+1 est approximé par 1050.

Une configuration binaire est en générale réservée à  la représentation de la "valeur" NaN ("not a number"), qui sera par exemple le résultat de la tentative de division flottante d'un nombre par zéro. NaN combiné avec n'importe quel nombre (y compris NaN), donne NaN.

Lien externe