Gostaria de entender por que a necessidade de cast no código:
int x = 10;
int y = 10;
System.out.println(x / (double) (x + y));
System.out.println(x / (x + y));
A saida será 0.5 e 0.
Eu acho que esse é erro mais comum quando se faz contas com java. Alguém conhece outro? Envolvendo outras necessidades de cast para que a conta retorne valor correto.
como x e y sao inteiros, é feita a divisao inteira! e a divisao inteira descarta a parte decimal.
para fazer uma divisao q leve em conta os decimais, é preciso usar operandos decimais. por isso q se faz o cast do inteiro (x+y) para double… assim o resultado sera o de uma divisao com double
furutani
E quais seriam os problemas se o cast fosse automatico?
aborges
Ele faz cast automatico qd vc tenta fazer operacoes com constantes
Exemplo:
x/10.3
10.5/100.4
//Ele fara cast de float
x/10
5/3
//Ele fara cast de byte
No seu caso, como todas variaveis eram int, nao tem como a JVM saber q vc quer um float como retorno ! :wink:
tRuNkSnEt
cast?? sou meio retardado o que seria cast?
alguem poderia dar teoria disso!!?