¿Por qué la división de datos de tipo doble y flotante en Java se puede dividir por cero?
Así es como está estipulado en Java. No hay ninguna razón para ello. Las estipulaciones específicas son las siguientes:
Cualquier número entero (byte, short, int, long es aceptable) dividido. por el entero 0 da como resultado ArithmeticException;
El resultado de dividir 0 por 0 en coma flotante es NAN. Si se desglosa, incluye las siguientes tres situaciones:
(1) 0/. 0.0
(2) 0.0 /0.0
(3) 0.0/0
Caso 3) Aunque la división es un entero 0, la conversión de tipo ocurrió durante la operación y se convirtió en un punto flotante 0;
El resultado de dividir cualquier número (los ocho tipos básicos) por un punto flotante 0 es Infinito/-Infinito.
Si preguntas por qué es así, se puede entender que el número de punto flotante 0 en Java no es un valor exacto, sino un número infinitamente cercano a 0.
Además, Float.NaN! =Float.NAN, Double.NaN!=Double.NaN; pero Float.POSITIVE_INFINITY==Float.POSITIVE_INFINITY==Double.POSITIVE_INFINITY,
Float.NEGATIVE_INFINITY==Float.NEGATIVE_INFINITY==Double.NEGATIVE_INFINITY.