Aller au contenu

Les flottants

Les flottants servent à représenter les nombres réels.

Toutefois, le nombre de chiffres utilisé en machine est nécessairement limité : une machine ne « connaît » donc pas tous les décimaux (elle n'identifie pas les décimaux ayant « trop » de chiffres).

Il existe donc une infinité de nombres non représentés en machine. Ainsi, les nombres \sqrt{2} ou \pi sont impossibles à manipuler dans un langage de programmation (que ce soit Python, Java, JavaScript, C, ...).
Seules des approximations de ces nombres sont connues.

Exemple

Une adresse IPv6 est codée sur 128 bits, le nombre d'adresses possibles est donc 2^{128}.

Effectuons ce calcul dans la console Python avec un entier, puis avec un flottant :

>>> 2**128
340282366920938463463374607431768211456

>>> 2.0**128
3.402823669209385e+38

Le calcul est exact si l'on calcule en utilisant l'entier 2 et il n'est pas exact si l'on utilise le flottant 2.0.
On constate là des différences de comportement qu'il faudra bien avoir en tête lorsqu'on code avec des flottants plutôt qu'avec des entiers.

L'objectif de ce chapitre est d'essayer de comprendre ce phénomène en précisant comment sont représentés les flottants en machine.