Pregunta

Al dividir por 1000, en ocasiones me encuentro con un error que no hace la división " correctamente " ;. Por ejemplo, al dividir 90.55 por 1000 en lugar de obtener .09055, obtengo .090549999999.

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

¿Por qué sucede esto? ¿Es este un resultado de la matemática de punto flotante? Una búsqueda en Google pareció indicar que esto puede ser un culpable, pero no he encontrado una respuesta concreta.

Para solucionar esto, puedo redondear la respuesta a 5 dígitos, pero parece que esto es solo un parche para un problema más profundo.

<fmt:formatNumber type="number" maxFractionDigits="5" value="${bean.paPrice / 1000}" />
¿Fue útil?

Solución

No es un problema, es simplemente un resultado natural de la representación binaria de punto flotante. Redondea tus valores y no te preocupes por eso.

Otros consejos

¿Por qué las computadoras apestan en matemáticas?

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

Sí, este es un problema común de formato de punto flotante .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top