Position actuelle: Accueil> Derniers articles> Façons courantes de résoudre les erreurs de division zéro avec IS_FINITE

Façons courantes de résoudre les erreurs de division zéro avec IS_FINITE

gitbox 2025-05-26

Dans PHP, l'erreur de division zéro est une erreur d'exécution courante, en particulier lors de l'exécution d'opérations mathématiques, si le dénominateur est nul, il provoquera un avertissement ou une exception du programme. Pour éviter cela, nous devons généralement vérifier la valeur du diviseur à l'avance pour nous assurer qu'il s'agit d'un nombre valide et n'est pas nul. PHP fournit la fonction is_finite () pour déterminer si une valeur est une valeur finie, ce qui est très utile pour attraper l'erreur de division zéro.

Quelle est la fonction is_finite?

is_finite () est une fonction de PHP pour détecter si une valeur numérique est une valeur finie. Renvoie vrai si l'argument est un nombre fini (ni infinité ni nan non-nombre), sinon renvoyez false .

 <?php
var_dump(is_finite(10));    // bool(true)
var_dump(is_finite(INF));   // bool(false)
var_dump(is_finite(NAN));   // bool(false)
?>

Idées pour éviter les erreurs d'élimination zéro en utilisant IS_FINITE

Lorsque vous effectuez des opérations de division, nous pouvons d'abord déterminer si le dénominateur est nul ou non fini. S'il ne s'agit pas d'un nombre fini, évitez la division ou donnez des valeurs par défaut ou des invites d'erreur.

Exemple de code

 <?php
function safe_divide($numerator, $denominator) {
    // Déterminez si le dénominateur est fini et non zéro
    if (is_finite($denominator) && $denominator != 0) {
        return $numerator / $denominator;
    } else {
        return "erreur:Le dénominateur ne peut pas être nul ou invalide";
    }
}

// test
echo safe_divide(10, 2);   // Sortir 5
echo safe_divide(10, 0);   // Sortir erreur:Le dénominateur ne peut pas être nul ou invalide
echo safe_divide(10, INF); // Sortir erreur:Le dénominateur ne peut pas être nul ou invalide
?>

Dans cet exemple, is_finite () détermine si le dénominateur est un nombre fini et peut effectivement éviter l'erreur de division zéro avec le $ dénominateur! = 0 Condition.

Autres façons courantes d'éviter les erreurs de suppression zéro

  1. Déterminez directement s'il est nul

 if ($denominator == 0) {
    // 处理erreur
} else {
    $result = $numerator / $denominator;
}
  1. Utilisez l'opérateur ternaire pour attribuer des valeurs par défaut

 $result = ($denominator == 0) ? 0 : $numerator / $denominator;
  1. Utiliser la gestion des exceptions

Pour PHP 7 et plus, vous pouvez gérer une exception DivisionByzeroError lancée en attrapant la division zéro:

 try {
    $result = $numerator / $denominator;
} catch (DivisionByZeroError $e) {
    echo "除零erreur:" . $e->getMessage();
}
  1. Combiné avec la fonction is_finite

Comme indiqué ci-dessus, combiné avec IS_FINITE (), il peut détecter la validité du diviseur, en évitant le cas où le dénominateur est Infinity ou NAN.

Résumer

La fonction is_finite () est un bon outil en PHP pour juger la validité des valeurs numériques. Combiné avec un jugement à division zéro, il peut aider les développeurs à écrire un code plus robuste pour éviter les erreurs de division zéro provoquant des accidents de programme. De plus, l'utilisation rationnelle du jugement conditionnel et de la gestion des exceptions est également un moyen commun et efficace. Selon les besoins réels, le choix de la bonne méthode de protection des erreurs peut améliorer la sécurité et la stabilité du code.