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
librairies BC ou GMP.
|