BigDecimal, + uma situação

3 respostas
O

Amigos tentando realizar esta divisão para o resultado 24,208333333 = 24,21, porem ao executar este comando o resultado é 24,17 onde posso alterar minha codificação ??

Double resultado=0.0d;
        BigDecimal bDividendo=new BigDecimal(581d,new MathContext(2,RoundingMode.HALF_EVEN));
        BigDecimal bDivisor=new BigDecimal(24d,new MathContext(2,RoundingMode.HALF_EVEN));
        try{
          BigDecimal bResultado=bDividendo.divide(bDivisor,MathContext.DECIMAL128).setScale(2, RoundingMode.HALF_EVEN);
          resultado=bResultado.doubleValue();
          System.out.print(resultado);
        }catch(Exception ex){
          ex.printStackTrace();
        }

NOTA PRECISO RETORNAR UM DOUBLE

obrigado

3 Respostas

E

Que complicado.

import java.math.*;

class Teste2421 {
    public static void main (String[] args) {
        BigDecimal bdDividendo = new BigDecimal ("581"); 
        BigDecimal bdDivisor = new BigDecimal ("24"); 
        BigDecimal bdResultado = bdDividendo.divide (bdDivisor, 2, RoundingMode.HALF_EVEN);
        System.out.println (bdResultado);
        double dblResultado = bdResultado.doubleValue();
        System.out.println (dblResultado);
    }
}
O

new BigDecimal(581d,new MathContext(2,RoundingMode.HALF_EVEN)) substiuir para new BigDecimal (581d)
obrigadao

Jose_Donizetti

Não se esqueça que se utilizar BigDecimal passando um double para seu construtor, você pode ter os mesmos problemas de utilizar double direto.
O correto é passar ao BigDecimal o valor como String!

No blog da caelum tem um ótimo post explicando sobre isso:
http://blog.caelum.com.br/2010/07/15/arredondamento-no-java-do-double-ao-bigdecimal/

Criado 8 de outubro de 2010
Ultima resposta 8 de out. de 2010
Respostas 3
Participantes 3