Bom dia galera, blz ?
to com a seguinte duvida…preciso fazer um método de arredondamento ( coisa simples )
fiz assim:
public static double arredonda(double num, int casas) {
num = num * (Math.pow(10d, casas));
long num2 = Math.round(num);
num = num2 / (Math.pow(10d, casas));
return num;
}
só que começou acontecer um erro estranho…quando eu passo esse valores? num=0.0005 e casas=3 ele retorna o seguinte valor: 0.0010 …TEM UM ZERO PERDIDO AI NO MEIO.
para tentar arrumar esse erro fiz o seguinte:
public static double arredonda(double num, int casas) {
num = num * (Math.pow(10d, casas));
long num2 = Math.round(num);
num = num2 / (Math.pow(10d, casas));
Double numArre = num;
if (numArre.toString().substring(numArre.toString().indexOf(".")).length()>(casas+1)){
//numArre=Double.parseDouble(numArre.toString().substring(0, numArre.toString().length()-1));
//ou
String arrendondaString = numArre.toString().substring(0, numArre.toString().length()-1);
numArre=Double.valueOf(arrendondaString);
num=numArre.doubleValue();
}
return num;
}
entrei com os mesmo valores (num=0.0005 e casas=3) CONTINUOU DANDO O MESMO RESULTADO: 0.0010
ai resolvi mudar tudo…fiz o seguinte:
public static double arredonda(double num, int casas) {
BigDecimal bd = new BigDecimal(num);
bd = bd.setScale(casas,BigDecimal.ROUND_HALF_UP);
return bd.doubleValue();
}
entrei com os mesmo valores (num=0.0005 e casas=3) CONTINUOU DANDO O MESMO RESULTADO: 0.0010
O que ta acontecendo ? EU QUERO QUE O RESULTADO SEJA 0.001 ( É PARA RELATORIOS) !!! PORQUE TA SAINDO ESSE RESULTADO: 0.0010 ??? PODE SER BUG DO JAVA ?
obs: tentai mais metodo diferente para resolver isso mas tb deu o mesmo erro.
valeu galera !!!