Cast em expressões matemáticas

5 respostas
furutani

Olá!

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.

Grato

5 Respostas

sergiolopes

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!!?

furutani

Conversão e Casting:

http://www.jspbrasil.com.br/jsp/tutoriais/tutorial.jsp?idTutorial=002_005

Criado 1 de maio de 2004
Ultima resposta 4 de mai. de 2004
Respostas 5
Participantes 4