Casting

galera o que eu fiz para converter int para float chama casting né? e por que a resposta deu 0,00 e não 0,01

	static int n1=1;
	static int n2=100;
	static float  r=(float)(n1/n2);
	
	public static void main(String[] args) {
		
		System.out.printf("%.3f",r);
		System.out.println(n1/n2);

Deu zero por causa da ordem em que as coisas foram feitas.

Por causa dos parênteses, primeiro ele faz a conta n1 / n2. Mas como esses dois números são inteiros, o resultado também será um inteiro, e por isso será truncado/arredondado para zero. Depois você faz o cast do zero para float, que também será zero.

Se quer que a conta seja feita corretamente, basta fazer o cast do primeiro valor, que aí o resultado da operação será um float também:

float r = (float) n1 / n2;

Assim, primeiro é feito o cast de n1 para float. Depois, ao dividir um float por um int, o resultado é um float.

2 curtidas

brigado