RESULTADO
NaN
NaN
NaN
Exception in thread “main” java.lang.ArithmeticException: / by zero
at Teste.main(Teste.java:12)
O que a matemática diz a respeito de divisão de um número qualquer por zero?
Qualquer calculadora furreca pode te permitir entender isso, tente fazer divisões com qualquer número por zero…
thisenrose
Ué.
Mas porque só a divisão entre inteiros que lança a exception?
Marlon_Meneses
thisenrose:
Ué.
Mas porque só a entre inteiros que lança a exception?
hum…
a dúvida é essa afinal!
bom… ai eu nao sei!
rs
acho que deve ser alguma coisa haver com a precisão
thisenrose
Deve ser pelo mesmo fato que não se deve representar valores monetários em Double mas sim Integer.
Talvez o java pense que o 0.0 na verdade seja 0.0000000000000000000000000001.
Em Inteiros 0/0 não existe, não está definido, por isso dá exception.
Em Double 0/0 não existe, mas em Double existe um valor que significa “não existe” que é o NaN ( Não é um Numero). Portanto, não dá erro, mas devolver NaN.
Usar double é perigoso por isto mesmo ( entre outras coisas) e vc não deve usar double sem um conjunto de cuidados. outros numeros que existem em double são -0 (menos zero. que não é zero) , +infinito e -infinito.
Ou seja, em double existem valores que representam limites, e isto pode ser muito louco de usar na prática, mas não é trivial.
E
entanglement
Vamos explicar isso direito.
Quando dividimos 0 por 0, podemos ter duas situações:
a) Quando 0 e 0 são dois números inteiros (ou long, ou short, ou char) então é gerada uma ArithmeticException, como esperado.
b) Quando pelo menos um dos zeros é um número de ponto flutuante (como double ou float), então o resultado é um “NaN”, tal como especificado por IEEE-754.
c) Quando dividimos um número que não é zero e é de ponto flutuante por 0, podemos ter a seguinte situação:
O número é positivo e o zero é positivo - o resultado é +Infinity
O número é negativo e o zero é positivo - o resultado é -Infinity
O número é positivo e o zero é negativo - o resultado é -Infinity
O número é negativo e o zero é negativo - o resultado é +Infinity
A razão pela qual isso ocorre é que para o padrão IEEE, zero não é exatamente o zero matemático, mas sim alguma quantidade que é infinitesimalmente próxima ao zero matemático. E é por isso que quando dividimos 1.0 por 0.0, o resultado é +Infinity.