Antes não tinha este problema, mas não sei porque, de um tempo pra cá o meu programa financeiro em java começou a trazer o resultado com casas decimais mesmo que o resultado seja inteiro. Exemplo:
Em qualquer calculadora: 12,6 + 0,7 = 13,3
No JAVA: 12,6 + 0,7 = 13,29999999999999
Porém isso só acontece com alguns cálculos, outros ele retorna inteiro normal.
Alguém sabe porque?
Estou fazendo esses cálculos usando variáveis double ou float, em ambos dá esse problema.
Eu tinha uma função que criei para um outro caso, para truncar ou arredondar valores. Ai acabei usando ela para estes casos também. Quando passo T, eu trunco, quando passo outro valor, arredondo. Segue a função:
{
//T trunca, se não, arredonda pro mais próximo.
if ( x > 0) {
if (“T”.equals(tipo))
return new BigDecimal(String.valueOf(x)).setScale(numberofDecimals, BigDecimal.ROUND_FLOOR);
else
return new BigDecimal(String.valueOf(x)).setScale(numberofDecimals, BigDecimal.ROUND_HALF_EVEN);
} else {
if (“T”.equals(tipo))
return new BigDecimal(String.valueOf(x)).setScale(numberofDecimals, BigDecimal.ROUND_CEILING);
else
return new BigDecimal(String.valueOf(x)).setScale(numberofDecimals, BigDecimal.ROUND_HALF_EVEN);
}
}