Pessoal, eu estou usando a classe DecimalFormat para arredondar alguns valores. Eu quero ter um resultado como o que segue abaixo.
27,382 -> 27,38
27,383 -> 27,38
27,384 -> 27,38
27,385 -> 27,39
27,386 -> 27,39
27,387 -> 27,39
27,388 -> 27,39
27,389 -> 27,39
O problema é que quando o valor é, por exemplo, “27,385”
ela me retorna “27,38”, sendo q deveria retornar “27,39”.
Alguém sabe como devo tratar isto?
solução
public static double round(double val, int places) {
long factor = (long) Math.pow(10, places);
// Shift the decimal the correct number of places
// to the right.
val = val * factor;
// Round to the nearest integer.
long tmp = Math.round(val);
// Shift the decimal the correct number of places
// back to the left.
return (double) tmp / factor;
}
onde val é o valor e places o número de casas decimais.