Pergunta

Ao dividir por 1000 eu em algum momento deparar com um bug que não faz a divisão "corretamente". Por exemplo, quando dividindo 90,55 em 1000 em vez de ficar 0,09055 eu recebo 0,090549999999.

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

Por que isso está acontecendo? É este o resultado de matemática de ponto flutuante? Uma busca no Google parecia indicar que este pode ser um culpado, mas eu não encontrei nenhuma resposta concreta.

Para corrigir isso eu posso completar a resposta a 5 dígitos, mas parece que este é apenas um patch para um problema mais profundo.

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

Solução

Não é um problema, é apenas um resultado natural da representação binária de ponto flutuante. Rodada seus valores e não se preocupe com isso.

Outras dicas

Por que computadores péssimo em matemática?

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

Sim, esta é uma comum de ponto flutuante questão formato .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top