W3docs

is_infinite()

Aprende a usar la función is_infinite() en PHP para determinar si un valor de punto flotante es infinito (INF o -INF).

La función is_infinite() en PHP comprueba si un valor de punto flotante es infinito, es decir, igual a INF (infinito positivo) o -INF (infinito negativo). Esta página explica qué se considera "infinito", cómo se comporta la función y las situaciones prácticas en las que la utilizarías.

Sintaxis y valor de retorno

is_infinite(float $num): bool
  • $num — el valor a comprobar.
  • Devuelve true si $num es INF o -INF, y false para cualquier otro valor, incluidos números finitos ordinarios y NAN (Not a Number).

is_infinite() solo tiene sentido para valores float. Los enteros nunca pueden ser infinitos en PHP, por lo que la función siempre devuelve false para ellos.

¿De dónde vienen los valores infinitos?

En PHP, los números de punto flotante siguen el estándar IEEE 754, que tiene valores especiales para el infinito. Obtienes INF o -INF cuando:

  • Usas la constante predefinida directamente: $x = INF;
  • Un cálculo desborda el rango de un float (aproximadamente ±1.8e308): 1.0e308 * 10 se convierte en INF.
  • Se produce una división por cero de punto flotante, o una función como log(0) devuelve infinito negativo.

Dado que estos valores se propagan silenciosamente en operaciones matemáticas posteriores (INF + 1 sigue siendo INF), comprobarlos es la forma de detectar un cálculo que ha salido del rango.

Uso básico

php— editable, runs on the server

Aquí asignamos la constante INF a $number y luego llamamos a is_infinite() para comprobarlo. La condición es verdadera, por lo que el script imprime The number is infinite.

Qué es y qué no es infinito

La tabla de valores a continuación muestra exactamente qué devuelve is_infinite(). Ten en cuenta que el desbordamiento produce INF, mientras que un número grande pero representable no:

<?php
var_dump(is_infinite(INF));               // bool(true)
var_dump(is_infinite(-INF));              // bool(true)
var_dump(is_infinite(PHP_FLOAT_MAX * 2)); // bool(true)  — overflow
var_dump(is_infinite(1 / 0.0001));        // bool(false) — large but finite
var_dump(is_infinite(42));                // bool(false) — an integer
var_dump(is_infinite(NAN));               // bool(false) — NAN is not infinite
?>

El punto clave a tener en cuenta: NAN (el resultado de operaciones como sqrt(-1)) no es infinito, por lo que is_infinite(NAN) es false. Usa is_nan() para detectar ese caso, e is_finite() para confirmar que un valor es un número ordinario y utilizable.

Un ejemplo práctico: protegerse contra el desbordamiento

Un uso habitual en el mundo real es validar el resultado de un cálculo antes de almacenarlo o mostrarlo. Si una operación ha desbordado hasta INF, tu código puede reaccionar en lugar de propagar el infinito:

<?php
function guardedMultiply(float $a, float $b): string
{
    $product = $a * $b;

    return is_infinite($product)
        ? "Result overflowed to infinity"
        : "Result: $product";
}

echo guardedMultiply(1.0e200, 1.0e200), PHP_EOL; // Result overflowed to infinity
echo guardedMultiply(2, 3), PHP_EOL;             // Result: 6
?>

Multiplicar 1.0e200 por sí mismo supera el rango del float, por lo que el producto es INF y la guardia lo detecta. La segunda llamada devuelve un valor normal.

is_infinite() frente a funciones relacionadas

PHP agrupa varios ayudantes para inspección de floats. Elige el que corresponda a la pregunta que estás formulando:

Para más funciones numéricas, consulta la referencia de PHP Math.

Conclusión

is_infinite() devuelve true únicamente para INF y -INF, lo que permite detectar desbordamientos de punto flotante y otras operaciones que producen infinito. Combínala con is_finite() e is_nan() para validar completamente el resultado de cualquier cálculo con floats antes de utilizarlo.

Práctica

Práctica
¿Cuál es el propósito de la función 'is_infinite()' en PHP?
¿Cuál es el propósito de la función 'is_infinite()' en PHP?
Was this page helpful?