Précision des nombres décimaux
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 .
|