Java pour l'informatique industrielle
Chapitre 1. Introduction aux objets
1.1. La programmation impérative
1.2. La programmation objet
1.3. Premier contact avec les objets
1.4. Les types
1.4.1. Le type boolean
1.4.2. Le type String
1.4.3. Le type char
1.4.4. Les types entiers
1.4.5. Les types réels approchés
1.4.6. Les types composés
1.5. Les variables
1.6. Les classes
Chapitre 2. Les structures de contrôle
Chapitre 3. Unifier et réutiliser
Chapitre 4. Modèle, Vue et Contrôle
Chapitre 5. Les entrées/sorties
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivante

1.4.5. Les types réels approchés

L'ensemble des nombres réels est non seulement infini, mais dense. Choisir une borne supérieure et un nombre de bits n'est donc pas suffisant pour extraire un sous-ensemble fini.

Parmi les nombreuses possibilités, Java a retenu le codage IEEE-754. Deux précisions sont disponibles :

Type primitif float (32 bits)
Les valeurs sélectionnées sont toutes celles qui peuvent s'écrire sous la forme (-1)S*2E-127*(1,M)2, où S est un signe (0 ou 1), E est un exposant entier de valeur comprise dans l'intervalle ]0,255[, et M est la mantisse codée sur 23 bits.
Type primitif double (64 bits)
Les valeurs sélectionnées sont toutes celles qui peuvent s'écrire sous la forme (-1)S*2E-1023*(1,M)2, où S est un signe (0 ou 1), E est un exposant entier de valeur comprise dans l'intervalle ]0,2047[, et M est la mantisse codée sur 52 bits.
En plus de ces valeurs, les deux types permettent de coder des valeurs spéciales : +∞, -∞, +0, -0, NaN (Not a Number). NaN regroupe tous les nombres qui ne sont pas codables comme, par exemple, les racines carrés de nombres négatifs.

Attention, cette sélection ne permet pas de représenter tous les nombres réels, c'est pour cela que l'on préférera le terme nombre approché au terme nombre réel. De plus, ces codages demandent des précautions d'emploi sur lesquelles nous reviendrons plus tard, en particulier pour la comparaison des nombres approchés.

Exercice : Pour se convaincre des problèmes qui peuvent apparaître avec ces types, le lecteur essaiera de coder le nombre 0.1 en binaire.

Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivante