JavaIntermedio25 oct 2025
¿Dividir por Cero? ¡Depende del tipo! 🤯
snippet.java
public class DivisionWTF {
public static void main(String[] args) {
try {
int integerResult = 1 / 0;
System.out.println("Integer division: " + integerResult);
} catch (ArithmeticException e) {
System.out.println("Integer division by zero: " + e.getMessage());
}
double doubleResult = 1.0 / 0.0;
System.out.println("Double division: " + doubleResult);
double nanResult = 0.0 / 0.0;
System.out.println("NaN division: " + nanResult);
}
}¿Qué crees que imprime?
✅ Salida Esperada
Integer division by zero: / by zero
Double division by zero: / by zero
NaN division by zero: / by zero⚠️ Salida Real
Integer division by zero: / by zero
Double division: Infinity
NaN division: NaN¿Por qué pasa esto?
¡Prepárate para un giro inesperado en el mundo de la aritmética Java! 🎢 Uno esperaría que dividir por cero siempre sea un no-no rotundo, ¡un crimen matemático que siempre acaba en excepción! 💥 Pero Java, con su particular encanto, nos muestra que no todas las divisiones por cero son iguales.
Cuando usas **enteros**, Java es un **purista estricto**. Intentar `1 / 0` es como intentar un salto base sin paracaídas: ¡`ArithmeticException` al canto! La JVM se niega a representarlo.
Pero, ¡ah, los **números de punto flotante**! 🧙♂️ Con `double` o `float`, Java cambia su sombrero a uno de matemático zen que sigue el estándar IEEE 754.
- `1.0 / 0.0` no explota, ¡se convierte en `Infinity`! Es como si dijera: "Sí, es infinitamente grande, no hay problema." 🌌
- Y `0.0 / 0.0` tampoco peta, ¡produce `NaN` (Not-a-Number)! Para Java, esto es una operación indefinida, pero en lugar de tirar un error, te da un valor especial que significa "no tengo ni idea qué es esto". 🤔
Es como si los enteros fueran directivos de empresa y los `double` unos artistas abstractos. ¡Un mismo problema, dos soluciones completamente diferentes!
Conceptos relacionados
floating-pointexceptionsarithmetic