[code]public class Aviao {
public static void main(String args[]) {
double a = 0.0;
double b = 0.0;
System.out.println(a / b);
}
}[/code]
Eu achava que deveria ocorrer uma exception pela divisão por 0, amas vi que a Resposta é NaN. Ai eu mudei o valor de a para 1 e ai ocorreu o retorno infinity.
Alguem pode me explicar o que é esse NaN e Infinity
Entao cara, em Java voce tera uma excecao lançada apenas quando ocorrer uma divisao por zero com o denominador do tipo INTEIRO, por isso voce nao tem exceção em seu exemplo. Lembre-se que desde o colégio os professores dizem que a divisao de sero por zero não está definida, por isso, 0.0/0.0 é NaN. Agora, quando fazemos a divisao de qualquer numero real (por exemplo, 2.0) por um numero menor do que 1 (por exemplo, 0.01) s seguinte condição: 2.0/0.1 < 2.0/0.001 < 2.0/0.0000000001, isto eh, no limite em que x = 0.00000001 -> zero veremos que 2.0/x -> inifito, isto eh, Infinity.
A idéia é que o zero, em ponto flutuante, não representa exatamente o número zero, mas uma aproximação desse número. Como você já deve ter percebido, dividir um número qualquer por um número muito pequeno resulta em um número muito grande. Se você extrapolar para o menor número possível (zero) então você obterá o maior número possível (infinito).
Isso ocorre em várias linguagens (como C, VB e Delphi), até porque é o próprio processador, através de suas instruções, que define esse comportamento.