Arredendamento de double

5 respostas
Hempx

Queria saber se existi alguma classe do java que arredonda um double

ex:
18.6789

eu queria que ficasse :

18.68

tava olha a classe DecimalFormat mas nao achei o que queria…

caso nao exista… eu tava pensando em transforma o numero em um String e arredondar a terceira casa antes da virgula… caso exista…
existi algum jeito melhor?
obrigado.

5 Respostas

luiz_ross
Tenta assim
DecimalFormat fm = new DecimalFormat("0,00");
   fm.format(seuvalordouble);
cv1

java.lang.Math :wink:

X
luiz_ross:
Tenta assim
DecimalFormat fm = new DecimalFormat("0,00");
   fm.format(seuvalordouble);

Exatamente luiz_ross, mas deve-se usar "."(ponto) no lugar da vírgula.
Ficando assim:

DecimalFormat fm = new DecimalFormat("0.00");
   fm.format(seuvalordouble);

flws

ViniGodoy

Tem sim:

double valor = 18.6789;
valor = Math.round((valor * 100)) / 100;

Converter para string está entre as piores alternativas que alguém poderia pensar.

J

ViniGodoy:
Tem sim:

double valor = 18.6789;
valor = Math.floor((valor * 100) + 0.5) / 100;

Converter para string está entre as piores alternativas que alguém poderia pensar.


Concordo

… ou, generalizando:

double arredonda(double original, int casas) {
    double multiplicador = Math.pow(10, casas);
    return Math.round(valor * multiplicador) / multiplicador;
}
...
double valor = 18.6789;
valor = arredonda(valor);
...
Criado 15 de outubro de 2003
Ultima resposta 9 de jul. de 2008
Respostas 5
Participantes 6