Prueba con división por cero
En el paso anterior, vimos cómo funciona Double.isInfinite()
con valores de infinito predefinidos. Ahora, exploremos un escenario común en el que el infinito puede surgir en los cálculos: la división por cero.
En la aritmética estándar, la división por cero está indefinida. Sin embargo, en la aritmética de punto flotante (que utiliza double
), dividir un número distinto de cero por cero da como resultado infinito positivo o negativo, dependiendo del signo del numerador. Dividir cero entre cero, o infinito entre infinito, da como resultado un valor especial llamado "No es un número" (NaN, por sus siglas en inglés), que cubriremos en el siguiente paso.
Modifiquemos nuestro programa para demostrar la división por cero y comprobar el resultado utilizando Double.isInfinite()
.
-
Abra el archivo HelloJava.java
en el editor WebIDE. Debería estar en el directorio ~/project
.
-
Reemplace el código actual con el siguiente:
public class HelloJava {
public static void main(String[] args) {
double positiveResult = 10.0 / 0.0;
double negativeResult = -10.0 / 0.0;
double zeroResult = 0.0 / 10.0;
System.out.println("Result of 10.0 / 0.0: " + positiveResult);
System.out.println("Is 10.0 / 0.0 infinite? " + Double.isInfinite(positiveResult));
System.out.println("Result of -10.0 / 0.0: " + negativeResult);
System.out.println("Is -10.0 / 0.0 infinite? " + Double.isInfinite(negativeResult));
System.out.println("Result of 0.0 / 10.0: " + zeroResult);
System.out.println("Is 0.0 / 10.0 infinite? " + Double.isInfinite(zeroResult));
}
}
Esto es lo que sucede en este nuevo código:
double positiveResult = 10.0 / 0.0;
: Dividimos un número positivo (10.0
) entre cero (0.0
). En la aritmética de punto flotante, esto da como resultado infinito positivo.
double negativeResult = -10.0 / 0.0;
: Dividimos un número negativo (-10.0
) entre cero (0.0
). Esto da como resultado infinito negativo.
double zeroResult = 0.0 / 10.0;
: Dividimos cero (0.0
) entre un número distinto de cero (10.0
). Esto da como resultado cero, que es un número finito.
- Luego imprimimos los resultados de estas divisiones y usamos
Double.isInfinite()
para comprobar si cada resultado es infinito.
-
Guarde el archivo (Ctrl+S o Cmd+S).
-
Compile el programa modificado en la Terminal:
javac HelloJava.java
Nuevamente, la ausencia de salida indica una compilación exitosa.
-
Ejecute el programa:
java HelloJava
Debería ver una salida similar a esta:
Result of 10.0 / 0.0: Infinity
Is 10.0 / 0.0 infinite? true
Result of -10.0 / 0.0: -Infinity
Is -10.0 / 0.0 infinite? true
Result of 0.0 / 10.0: 0.0
Is 0.0 / 10.0 infinite? false
Esto demuestra que dividir un número de punto flotante distinto de cero entre cero produce correctamente infinito (positivo o negativo), y Double.isInfinite()
identifica con precisión estos resultados. Dividir cero entre un número distinto de cero da como resultado cero, que no es infinito.