Question

En divisant par 1000, je rencontre parfois un bogue qui ne fait pas la division "correctement". Par exemple, lorsque je divise 90,55 par 1 000 au lieu de .09055, j’obtiens .090549999999.

<c:out value="${bean.paPrice / 1000}" />

Pourquoi cela se passe-t-il? Est-ce le résultat d'un calcul en virgule flottante? Une recherche sur Google semble indiquer que c'est peut-être un coupable, mais je n'ai trouvé aucune réponse concrète.

Pour résoudre ce problème, je peux arrondir la réponse à 5 chiffres, mais il semble que ceci ne soit qu'un correctif pour un problème plus profond.

<fmt:formatNumber type="number" maxFractionDigits="5" value="${bean.paPrice / 1000}" />
Était-ce utile?

La solution

Ce n'est pas un problème, c'est simplement un résultat naturel de la représentation binaire du point flottant. Entourez vos valeurs et ne vous inquiétez pas pour ça.

Autres conseils

Pourquoi les ordinateurs craignent les maths?

http://www.codinghorror.com/blog/archives/001266.html

Oui, il s'agit d'un format au format à virgule flottante commun.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top