A divisão de 2 inteiros sempre retorna um inteiro. Sempre.
No método ‘get’ você divide 5 por 3. São dois inteiros. Portanto o resultado é 1 e o resto é 2.
No método ‘get2’ você faz o mesmo e armazena o resultado em um double. Note que o valor da variável também será 1.
Quando você faz isso:
System.out.println((double)5/3);
Você está fazendo um cast do 5 para double e depois dividindo por 3. É o mesmo que fazer isso:
System.out.println(5.0/3);
Como um dos operadores é double, o resultado também é um double (no caso, 1.666666666667).
M
marcobiscaro2112
Depois de entender o que eu disse acima, pense (sem compilar!) no que seria impresso com a seguinte linha:
System.out.println((double)(5/3));
mews
exatamente como o nosso amigo marcobiscaro2112 disse.
Por mais que o retorno do seu método seja double, a operação está sendo feita entre dois número inteiros.
Uma forma seria criando uma variável double e atribuindo a ela um valor e em seguida realizar o cálculo utilizando as variáveis criadas.
Outra forma, mas não tão correta seria fazer da seguinte forma:
public static double get() {
return 5d/3d;
}
…onde o “d” após o número indica que esse é do tipo double;
JhowTroMundo
marcobiscaro2112:
Depois de entender o que eu disse acima, pense (sem compilar!) no que seria impresso com a seguinte linha:
System.out.println((double)(5/3));
Hmmmm
Agora sim vejo razão.
O cast vale apenas para o 5, e não pro resultado da divisão 5/3, que é o caso do seu exemplo (que também resultaria em 1.0).