Aktueller Standort: Startseite> Neueste Artikel> So lösen Sie das Problem von IS_NAN in PHP, um Unendlichkeit und NAN zu bestimmen

So lösen Sie das Problem von IS_NAN in PHP, um Unendlichkeit und NAN zu bestimmen

gitbox 2025-05-28

In PHP wird die IS_NAN -Funktion verwendet, um festzustellen, ob eine Variable "nan" ist (nicht eine Zahl). Obwohl diese Funktion die meisten nicht numerischen Ausnahmen effektiv beurteilen kann, verwirrt sie Entwickler, wenn sie sich mit speziellen numerischen Werten wie Unendlichkeit befasst.

Was sind Nan und Unendlichkeit?

  • NAN (nicht eine Zahl) : Zeigt einen besonderen Wert an, der keine Zahl ist. Es tritt normalerweise auf, wenn das Berechnungsergebnis nicht als numerischer Wert definiert werden kann, wie z. B. 0/0 oder eine negative Quadratwurzelzahl.

  • Unendlichkeit : Zeigt einen sehr großen Wert an, der normalerweise auftritt, wenn er den von PHP unterstützten maximalen schwimmenden Wert überschreitet. Bei der Berechnung von 1/0 erhalten Sie beispielsweise INF (positiv unendlich) oder -inf (negativ unendlich).

Warum kann IS_NAN Unendlichkeit nicht richtig beurteilen?

In PHP bestimmt die IS_NAN -Funktion nur, ob ein Wert NAN ist, und es wird nicht bestimmen, ob es sich um unendlich handelt. Zum Beispiel:

 var_dump(is_nan(NAN)); // bool(true)
var_dump(is_nan(INF)); // bool(false)
var_dump(is_nan(-INF)); // bool(false)

Wie Sie sehen können, gibt IS_NAN nur dann wahr , wenn der Wert NAN ist, andere wie inf oder -inf Return Falsch , was Entwickler möglicherweise verwirren kann, da sowohl INF als auch NAN den numerischen Zustand der Ausnahme darstellen.

Wie löst ich dieses Problem?

Um das Urteil von Infinity und Nan zu bewältigen, können wir dieses Problem lösen, indem wir andere Funktionen kombinieren. Es gibt eine IS_Infinite -Funktion in PHP, mit der festgestellt werden kann, ob ein Wert unendlich (positiv oder negativ unendlich) ist, während IS_NAN verwendet wird, um festzustellen, ob es sich um "Nan" handelt.

Lösung:

 <?php

function is_nan_or_infinite($value) {
    if (is_nan($value)) {
        return 'NaN';
    } elseif (is_infinite($value)) {
        return 'Infinity';
    } else {
        return 'Neither NaN nor Infinity';
    }
}

echo is_nan_or_infinite(NAN); // Ausgabe NaN
echo is_nan_or_infinite(INF); // Ausgabe Infinity
echo is_nan_or_infinite(-INF); // Ausgabe Infinity
echo is_nan_or_infinite(123); // Ausgabe Neither NaN nor Infinity

?>

Diese benutzerdefinierte Funktion is_nan_or_infinite beurteilt zwei spezielle Werte Nan und Infinity . Durch die Verwendung von IS_NAN und dann mit IS_Infinite , um sie zu beurteilen, können die beiden genau unterschieden werden.

Dinge in der praktischen Anwendung zu beachten

  • NAN tritt normalerweise auf, wenn mathematische Berechnungsfehler, Operationen wie 0/0 oder SQRT (-1) NAN zurückgeben. Wenn Sie diese Ausreißer in der Datenverarbeitung begegnen, sollten Sie sich daher rechtzeitig mit ihnen befassen, um zu vermeiden, dass die Ergebnisse beeinflusst werden.

  • Unendlichkeit tritt normalerweise auf, wenn der mathematische Überlauf wie 1/0 oder sehr große numerische Berechnungen Inf oder -inf zurückgeben. In Anwendungen kann Infinity den normalen Datenfluss beeinflussen, sodass sie je nach den Geschäftsbedürfnissen vernünftig behandelt werden müssen.