2011-09-28 6 views
0

quand je fais cette multiplicationErreur de virgule flottante dans la représentation?

0,94 * 8700

la sortie est

8177,999999999999

mais il aurait dû être

J'utilise java, mais je ne pense pas que cette erreur est liée à un langage de programmation particulier maintenant ma question est ... pourquoi cela est arrivé ??
et quels autres numéros (juste comme un exemple) provoquent la même erreur?

+1

http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems Il y a 10 types de personnes dans le monde: ceux qui comprennent le binaire et ceux qui ne le comprennent pas. – JiminP

+0

Voici un assez bon aperçu de la façon dont le point flottant fonctionne: http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html – jncraton

Répondre

5

La raison spécifique dans votre cas est que le nombre réel 0,94 ne peut pas être représenté exactement dans un virgule flottante double précision. Lorsque vous tapez 0.94, le nombre réel stocké est 0.939999999999999946709294817992486059665679931640625.

+0

+1 exactement exact. –

0

Ce n'est pas une erreur. Les flottants IEEE ne peuvent pas représenter exactement les nombres décimaux.

Questions connexes