Arredondamento

2 respostas
L

Boas pessoal,

tenho uma app que me entrega o numero no seguinte formato :

1.589.800,85  R$

Eu gostaria de fomatar o mesmo numero como apenas uma casa decimal, ou seja ele faz um arredondamento comercial e o numero ficaria assim :

1.589.800,9   R$

Alguem me pode ajudar ?

Cumprimentos

2 Respostas

Fernando_Generoso_da

uma maneira:

double value = 1589800.85;
int casas = String.valueOf(value).length() - 2;
MathContext mc = new MathContext(casas, RoundingMode.HALF_UP);
BigDecimal bd = new BigDecimal(value, mc);
System.out.println(bd.doubleValue());
ViniGodoy

Esse código faz o arredondamento:

public static void round(double numero, int casas) {
   int pow = Math.pow(10, casas);
   Math.round(numero *  pow) / pow;
}

Se precisa também saber como transformar a string do número num double, veja o método parse da classe NumberFormat.

Como são valores monetários, o uso de BigDouble (como mostrou o Fernando) é recomendado. Especialmente pq geralmente só se quer perder precisão na hora de exibir os dados.

Criado 21 de julho de 2008
Ultima resposta 21 de jul. de 2008
Respostas 2
Participantes 3