Start · Sprachen · PHP · Referenz · is_infinite

is_infinite

Funktion

Prüft, ob eine Gleitkommazahl unendlich ist (positiv oder negativ unendlich, d.h. <code>INF</code> oder <code>-INF</code>).

seit PHP 4.2.0 Kategorie: math

Signatur

is_infinite(float $num): bool

Beschreibung

is_infinite() gibt true zurück, wenn der übergebene Wert positiv oder negativ unendlich ist. Unendlichkeit entsteht in PHP typischerweise durch mathematische Operationen, die den darstellbaren Bereich von Gleitkommazahlen überschreiten, z. B. log(0), pow(10, 1000) oder Division durch sehr kleine Zahlen.

Die Funktion ist das Gegenstück zu is_finite() und ergänzt is_nan(), das auf Not a Number (NaN) prüft. Zusammen ermöglichen diese drei Funktionen eine vollständige Validierung von Gleitkommazahlen vor ihrer weiteren Verwendung in Berechnungen oder Ausgaben.

In der Praxis ist is_infinite() besonders nützlich, wenn Ergebnisse aus mathematischen Berechnungen (z. B. Logarithmen, Exponentialfunktionen, physikalische Simulationen) vor der Weiterverarbeitung auf Plausibilität geprüft werden müssen, um unerwartetes Verhalten oder Fehler zu vermeiden.

Parameter

Name Typ Default Beschreibung
$num Pflicht float Die zu prüfende Gleitkommazahl. Typischerweise das Ergebnis einer mathematischen Operation, das möglicherweise INF oder -INF sein könnte.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn num positiv unendlich (INF) oder negativ unendlich (-INF) ist, andernfalls false.

Beispiele

Grundlegende Verwendung mit INF und -INF

<?php
var_dump(is_infinite(INF));      // true
var_dump(is_infinite(-INF));     // true
var_dump(is_infinite(1.0));      // false
var_dump(is_infinite(NAN));      // false (NaN ist nicht unendlich)
bool(true) bool(true) bool(false) bool(false)

Prüfung von Berechnungsergebnissen vor Weiterverarbeitung

<?php
function sichererLogarithmus(float $wert): string {
    $ergebnis = log($wert);

    if (is_infinite($ergebnis)) {
        return 'Fehler: Ergebnis ist unendlich (Eingabe war wahrscheinlich 0 oder negativ).';
    }

    if (is_nan($ergebnis)) {
        return 'Fehler: Ergebnis ist keine gültige Zahl.';
    }

    return 'Logarithmus: ' . $ergebnis;
}

echo sichererLogarithmus(10) . PHP_EOL;   // Gültiger Wert
echo sichererLogarithmus(0) . PHP_EOL;    // Ergibt -INF
echo sichererLogarithmus(-5) . PHP_EOL;   // Ergibt NAN
Logarithmus: 2.302585092994 Fehler: Ergebnis ist unendlich (Eingabe war wahrscheinlich 0 oder negativ). Fehler: Ergebnis ist keine gültige Zahl.

Entstehung von Unendlichkeit durch Überlauf

<?php
$gross = PHP_FLOAT_MAX * 2;
echo var_export(is_infinite($gross), true) . PHP_EOL; // true

$normal = PHP_FLOAT_MAX;
echo var_export(is_infinite($normal), true) . PHP_EOL; // false
true false

// Wichtig · Fallstricke

Hinweis zur Typumwandlung: Ganzzahlige Werte werden implizit in float konvertiert, bevor die Prüfung stattfindet. Sehr große Ganzzahlen, die den Float-Bereich überschreiten, können dabei zu INF werden und is_infinite() gibt true zurück.

Verhalten von NAN: is_infinite(NAN) gibt false zurück, da NaN technisch nicht gleich Unendlich ist. Zur vollständigen Validierung sollten immer sowohl is_infinite() als auch is_nan() eingesetzt werden, oder alternativ is_finite(), das nur bei endlichen, gültigen Zahlen true zurückgibt.