Divisao por 0

Ola galera, sou eu de novo.

gente alguem pode me explicar essa questão :

[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

PS : aprendi a usar o [/code]. Valeu ViniGodoy

De nada.

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.

Espero ter ajudado

A exceção da divisão por zero ocorre apenas quando os dois operandos são inteiros (porque nesse caso o zero é absolutamente zero, nem mais nem menos).

Quando se trata de ponto-flutuante (double ou float), a divisão por zero é definida como:

0.0 / 0.0 -> resultado = NaN (“Not-a-Number”, ou seja, é um “não-número”. Assim como um troll é “não-humano”. )

(número positivo) / 0.0 = +Infinity
(número negativo) / 0.0 = -Infinity
(número positivo) / -0.0 = -Infinity
(número negativo) / -0.0 = +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.

1 curtida

Lembrando as aulas de Cálculo agora hehehehe!

Legal que se você fizer uma divisão por zero utilizando EL tbm da infinity:

${5 div 0}

[quote=breno500as]Legal que se você fizer uma divisão por zero utilizando EL tbm da infinity:

${5 div 0}[/quote]

Dá porque para EL todos os números são “double” se não me engano. Então ele transforma para a expressão Java 5.0 / 0.0, que dá “+Infinity” mesmo.