Java.lang.ArithmeticException

2 respostas
Guilherme_Gomes

Meu programa está tentando dividir 1 por 100233 e está dando esse erro com essa mensagem:

Non-terminating decimal expansion; no exact representable decimal result.

Eu entendi o erro, mas não faço idéia de como cura-lo. Alguem pode me dar uma luz?

Obrigado,

2 Respostas

T

Você está usando BigDecimal?
Toda vez que se faz uma divisão é necessário especificar a precisão.
Como ele disse, o resultado dá uma dízima periódica e não pode ser representado exatamente em decimal.

1 / 100233 = 0,0000099767541628006744285814053255914…

Veja a documentação de BigDecimal para ver qual é o overload do método divide que permite especificar a precisão.

Ednei_Alves_dos_Sant

Olá, estava com um problema parecido, para mim a solução foi passar um modo de arrendondamento:
RoundingMode.HALF_UP (existem outros).

Exemplo:

new BigDecimal(“1”).divide(new BigDecimal(“100233”),RoundingMode.HALF_UP)

Criado 12 de dezembro de 2007
Ultima resposta 27 de ago. de 2008
Respostas 2
Participantes 3