JAVA - Cálculo retornando número com decimais sendo que o resultado é inteiro

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.

Seu primeiro problema é a pesquisa!



Obrigado, já resolveu meu problema. Eu pesquisei sim amigo, não estava colocando as palavras corretas.

Contribua, poste a solução

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:

  private static BigDecimal ajustaDecimal(double x,int numberofDecimals, String tipo)

{
//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);
}
}