Pergunta

Por que quando faço a divisão com dois inteiros o resultado dá inteiro mesmo quando é colocado numa variável real?

Resposta

Quando escrevemos:

int a = 3, b = 2;
float valorReal = a/b;
System.out.println(""+valorReal);

Espera-se que a variável valorReal contenha 1.5, mas ao verificarmos descobrimos que contêm apenas 1.

Em Java (como na linguagem C) a divisão de um inteiro por outro inteiro resulta num inteiro. Assim 3/2 resulta em 1, valor posteriormente atribuído a variável valorReal.

Para obtermos um resultado real da divisão de variáveis ou valores inteiros devemos proceder a conversão do numerador ou do denominador da expressão para um tipo real, forçando a avaliação da expressão como sendo um valor do mesmo tipo real. Tal conversão pode ser realizada através do casting, ou seja, da indicação explícita do tipo que deve ser utilizado numa operação:

int a = 3, b = 2;
float valorReal = (float) a/b;
System.out.println(""+valorReal);

O casting se faz indicando tipo desejado entre parêntesis, tratado assim como operador cast.