[RESOLVIDO]Problema com BigDecimal

3 respostas
L

É o seguinte:
Tenho que fazer a seguinte conta: 47,6 / 55 = 0.[telefone removido]…
Dá uma dízima, daí isso gera uma AritmetcException.

Li sobre e dizem pra usar arredondamento, como HALF_UP.
O problema é que os arredondamentos arredondam o resultado para um inteiro, certo? E não é isso que quero!
Eu quero o resultado 0.865400000…, com 4 casas de precisão, ou seja, 0.8654.
Ja tentei setScale e não funciona, pois a excepiton é gerada antes e daí não consigo fazer nada, nem pegar o resultado.
É muito estranho isso, pois estou usando BigDecimal justamente para ter precisão, e usando o rounding eu perco essa precisão. Daí não adianta.

Aguém sabe oq posso fazer?

Desde já, obrigado!

3 Respostas

rmendes08

Você deve usar um MathContext na divisão, passando o número de casas decimais e o modo de arredondamento que você quer:

MathContext ctx = new MathContext(4, RoundingMode.HALF_UP);
		
BigDecimal _47_6 = BigDecimal.valueOf(47.6);
BigDecimal _55 = BigDecimal.valueOf(55);
		
BigDecimal result = _47_6.divide(_55, ctx);
balrog

para obter este resultado vc tera que usar o RoundingMode.DOWN, pois o que vc esta usando vai te dar 0.8655

L

Deu certo!
Valeu, rmendes08!!

Muito obrigado mesmo!!!

Criado 30 de junho de 2010
Ultima resposta 30 de jun. de 2010
Respostas 3
Participantes 3