Boa tarde a todos,
preciso truncar um BigDecimal que possui mais de 2 casas decimais e fixalo com apenas 2 casas após a virgula, por exemplo:
transformar 1.0392089 para 1.04
Alguém pode me ajudar?
Desde já agradeço pelas respostas!
Como truncar um BigDecimal com mais de 2 casas decimais
G
5 Respostas
Acabei de usar uma solução em JS
Exemplo:
var num = ‘125.5’;
num = parseFloat(num);
num.toFixed(2);
Resultado: 125.50
Você não quer truncar (ignorar casas decimais), mas sim arredondar (obter o número mais próximo com 2 casas). Tente isso:
BigDecimal arredondado = a_arredondar.round(new MathContext(2));
G
Vlw pela ajuda galera mas ja resolvi utilizando esta solução aqui, caso alguem se interesse de ver, ai vai:
public BigDecimal formataDecimal(BigDecimal vlrFator){
BigDecimal numFormatado = vlrFator.setScale(2, BigDecimal.ROUND_UP);
return numFormatado;
}
Blz Gabriel!? Cara, implementei a forma que você utilizou para arredondar o seguinte valor: 16,66666666666667. Só que ele informa o seguinte erro:
MathContext mc = new MathContext( (int)Math.min(this.precision() +
(long)Math.ceil(10.0*divisor.precision()/3.0),
Integer.MAX_VALUE),
RoundingMode.UNNECESSARY);
BigDecimal quotient;
try {
quotient = this.divide(divisor, mc);
} catch (ArithmeticException e) {
throw new ArithmeticException("Non-terminating decimal expansion; " + // Linha apontada...
"no exact representable decimal result.");
}
Tente fazer 100/6 para ver se ele arredonda? Até mais!
Consegui resolver, fiz o seguinte:
BigDecimal valorUnitario = campValTotProd.divide(divisor, MathContext.DECIMAL32);
Até mais!
Criado 2 de setembro de 2010
Ultima resposta 18 de abr. de 2012
Respostas 5
Participantes 4
Alura Sistemas operacionais: entenda seu conceito e suas funções Descubra o que são sistemas operacionais, suas funções e tipos. Aprenda tudo de forma clara e objetiva. Não perca tempo!
Casa do Codigo Orientacao a Objetos: Aprenda seus conceitos e suas... Por Thiago Leite e Carvalho — Casa do Codigo