Infinity [resolvido]

3 respostas
G

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:
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);		
	}
}
Resultado do codigo:
Infinity
0.18285714285714288
0.0
0.128
Infinity

3 Respostas

E

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”.

pedroroxd

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.

rmendes08

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.

Criado 17 de março de 2010
Ultima resposta 17 de mar. de 2010
Respostas 3
Participantes 4