W3docs

is_infinite()

Aprenda sobre a função is_infinite() no PHP, usada para verificar se um valor de ponto flutuante é infinito (INF ou -INF).

A função is_infinite() no PHP verifica se um valor de ponto flutuante é infinito — ou seja, igual a INF (infinito positivo) ou -INF (infinito negativo). Esta página explica o que é considerado "infinito", como a função se comporta e as situações práticas em que você precisaria dela.

Sintaxe e valor de retorno

is_infinite(float $num): bool
  • $num — o valor a ser testado.
  • Retorna true se $num for INF ou -INF, e false para qualquer outro valor, incluindo números finitos regulares e NAN (Not a Number).

is_infinite() faz sentido apenas para floats. Inteiros nunca podem ser infinitos em PHP, portanto a função sempre retorna false para eles.

De onde vêm os valores infinitos?

Em PHP, os números de ponto flutuante seguem o padrão IEEE 754, que possui valores especiais para infinito. Você obtém INF ou -INF quando:

  • Você usa a constante predefinida diretamente: $x = INF;
  • Um cálculo transborda o intervalo de um float (aproximadamente ±1.8e308): 1.0e308 * 10 torna-se INF.
  • Ocorre uma divisão por zero de ponto flutuante, ou uma função como log(0) retorna infinito negativo.

Como esses valores se propagam silenciosamente por cálculos posteriores (INF + 1 ainda é INF), verificá-los é a forma de detectar um cálculo que saiu do intervalo.

Uso básico

php— editable, runs on the server

Aqui atribuímos a constante INF a $number, depois chamamos is_infinite() para testá-la. A condição é verdadeira, portanto o script imprime The number is infinite.

O que é e o que não é infinito

A tabela de valores abaixo mostra exatamente o que is_infinite() retorna. Observe que o transbordamento produz INF, enquanto um número grande mas representável não:

<?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
?>

O principal ponto de atenção: NAN (o resultado de operações como sqrt(-1)) não é infinito, portanto is_infinite(NAN) é false. Use is_nan() para detectar esse caso, e is_finite() para confirmar que um valor é um número comum e utilizável.

Um exemplo prático: proteção contra transbordamento

Um uso real comum é validar o resultado de um cálculo antes de armazená-lo ou exibi-lo. Se uma operação transbordou para INF, seu código pode reagir em vez de propagar infinito adiante:

<?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 si mesmo excede o intervalo de float, portanto o produto é INF e a proteção o captura. A segunda chamada retorna um valor normal.

is_infinite() vs. funções relacionadas

O PHP agrupa vários auxiliares de inspeção de floats. Escolha o que corresponde à pergunta que você está fazendo:

Para mais auxiliares numéricos, consulte a referência de matemática PHP.

Conclusão

is_infinite() retorna true apenas para INF e -INF, permitindo detectar transbordamento de ponto flutuante e outras operações que produzem infinito. Use-a em conjunto com is_finite() e is_nan() para validar completamente o resultado de qualquer cálculo com float antes de confiar nele.

Prática

Prática
Qual é o propósito da função 'is_infinite()' no PHP?
Qual é o propósito da função 'is_infinite()' no PHP?
Was this page helpful?