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.