Manuel PHP
Précédent | Chapitre 10. Les types | Suivant

# Les nombres à virgule flottante

Les nombres à virgule flottante (connus aussi sous le vocable de "double" ou "float" "nombre rééls") peuvent être spécifiés en utilisant la syntaxe suivante :

Exemple 10-11. Exemple de nombres à virgule flottante

`<?php $a = 1.234; $b = 1.2e3; $c = 7E-10; ?>`

Formellement :

`LNUM [0-9]+ DNUM ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*) EXPONENT_DNUM ( ({LNUM} | {DNUM}) [eE][+-]? {LNUM})`

La taille des nombres décimaux dépend de la plate-forme. Un maximum de ~1.8e308 avec une précision de 14 décimales est une configuration répandue : c'est le format 64 bits IEEE.

Précision des nombres à virgule flottante

Il est fréquent que de simples fractions décimales telles que 0.1 ou 0.7 ne puissent être converties au format interne binaire sans une légère perte de précision. Cela peut conduire à des résultats étonnants : par exemple, floor((0.1+0.7)*10) retournera 7 au lieu de 8 car le résultat de la représentation interne est 7.9999999999....

Tout ceci est lié au fait qu'il est impossible d'exprimer certaines fractions en un nombre fini de chiffres. Par exemple 1/3 s'écrira 0.3333333... en mode décimal.

Ne faites donc jamais confiance aux nombres à virgule jusqu'à leur dernière décimale, et ne comparez jamais ces nombres avec l'opérateur d'égalité. Si vous avez besoin d'une précision particulière, reportez-vous au traitement des nombres de grande taille avec les bibliothèques BC ou GMP.

## Conversion d'un nombre à virgule flottante

Pour savoir quand et comment des chaînes sont converties en nombre à virgule flottante, voyez la section Conversion de chaînes de caractères. Pour les valeurs d'autres types, la conversion est la même que si la valeur était d'abord convertie en entier, puis en nombre décimal. Voyez la section Conversion d'un entier.

Précédent | Sommaire | Suivant
Entiers | Niveau supérieur | Les chaînes de caractères