Infinity [resolvido]

Bom pessoal não é um problema, pois já entendi o funcionamento mas gostaria de saber mais o que é esse infinity e pq o resultado de uma divisão de um inteiro resulta em infinity

Segue codigo de exemplo:

[code]public class teste {

/**
 * @param args
 */
public static void main(String[] args) {		
	double valor = 0;	
	
	double medida = 128.0; 
	int tempo = 42;
			
	//Retorna infinity, não conssegue realizar a divisão 
	valor = ((medida / 1000) / (tempo / 60));		
	System.out.println(valor);
	
	//Retorna a divisão 
	valor = ((medida / 1000) / ((double)tempo / 60));		
	System.out.println(valor);
	
	
	//Outro exemplo que retorna infinity
	double var1 = 0.00000f;
	var1 = (tempo / 60);
	System.out.println(var1);
	
	double var2 = 0f;
	var2 = (medida / 1000);
	System.out.println(var2);
			
	valor = (var2 / var1);
	System.out.println(valor);		
}

}[/code]

Resultado do codigo:

Infinity 0.18285714285714288 0.0 0.128 Infinity

Quando você divide algo por zero, o que ocorre?

  • Se os dois números (o dividendo e o divisor) forem inteiros, ocorre uma exceção.

  • Se algum dos números for um double ou um float, então o resultado pode ser +Infinity (dividendo > 0), -Infinity (dividendo < 0) ou NaN (dividendo == 0).

É que, em ponto flutuante (double ou float), zero (0.0) não é o zero matemático, mas algo que é muito próximo de zero.

Quando você divide algo por um número muito próximo de zero, o resultado é um número muito grande. O Java entende que esse número muito grande é “Infinity”.

Mas quando você divide 0 por 0, o resultado é indeterminado, e representado pelo Java como “NaN” (“not-a-number”), que quer dizer “não é um número” ou “número indeterminado”.

Pensa assim:

10 / 2 = 5
10 / 1 = 10
10 / 0,1 = 100
10 / 0,00001 = 1000000

Então, imagina 10 / 0,000000000000000000000000000000000000000000001
Dá um número gigantesco, por isso que toda divisão por 0, tende a ser infinito.

1 curtida

Só para completar, o compilador Java converte os operandos de uma expressão para o tipo mais alto que se encontra nela. Que isso quer dizer ? Se em uma expressão você tem int’s e double’s então os int’s são convertidos em double, e toda a expressão é avaliada como se fosse double.