Position actuelle: Accueil> Derniers articles> Comment éviter l'erreur de juger que les nombres de points flottants sont des entiers lorsqu'ils utilisent IS_INT?

Comment éviter l'erreur de juger que les nombres de points flottants sont des entiers lorsqu'ils utilisent IS_INT?

gitbox 2025-05-31

Comment éviter les erreurs lors de l'utilisation de IS_INT pour juger des numéros de points flottants?

Si vous souhaitez déterminer si un numéro de point flottant est une valeur entière, vous pouvez utiliser les méthodes suivantes:

1. Utilisez la fonction plancher () ou ceil () pour comparer

Si un nombre de points flottants est un entier, alors son plancher () (arrondi) et ceil () (arrondi) devraient être égaux à lui-même.

Exemple de code:

 <?php
function isFloatInteger($num) {
    if (!is_float($num)) {
        return false;
    }
    return floor($num) == $num;
}

var_dump(isFloatInteger(3.0));   // bool(true)
var_dump(isFloatInteger(3.5));   // bool(false)
var_dump(isFloatInteger(4));     // bool(false) — 4C&#39;est un entier,Pas un numéro de point flottant
?>

Ce code détermine d'abord s'il s'agit d'un numéro de point flottant, puis utilise Floor () pour déterminer s'il s'agit d'une valeur entière.

2. Utiliser la conversion et la comparaison de type

Vous pouvez convertir le numéro de point flottant en un entier, puis comparer s'il est égal à la valeur d'origine.

 <?php
function isFloatValueInteger($num) {
    return is_float($num) && (int)$num == $num;
}

var_dump(isFloatValueInteger(5.0));  // bool(true)
var_dump(isFloatValueInteger(5.1));  // bool(false)
?>

Cette méthode est simple et intuitive.

3. Utilisez filter_var pour combiner des expressions régulières

Si la variable est d'un type de chaîne, vous pouvez également utiliser une expression régulière pour déterminer s'il s'agit d'un entier représenté par point flottant.

 <?php
function isFloatStringInteger($str) {
    return preg_match('/^-?\d+\.0+$/', $str) === 1;
}

var_dump(isFloatStringInteger("3.0"));   // bool(true)
var_dump(isFloatStringInteger("3.00"));  // bool(true)
var_dump(isFloatStringInteger("3.1"));   // bool(false)
?>

Cela convient au traitement des données de chaîne d'entrée.


Résumer

  • is_int () détermine si le type de variable est un entier et ne détermine pas si la valeur elle-même est un entier.

  • Même si la valeur d'un numéro de point flottant est un entier (tel que 3.0), il reviendra faux en utilisant iS_int () pour juger.

  • Lorsque vous devez déterminer si un numéro de point flottant est une valeur entière, vous pouvez utiliser la conversion de type plancher () , (int) ou des expressions régulières et d'autres méthodes.

  • Sélectionnez une méthode appropriée en fonction du scénario réel pour éviter les exceptions du programme en raison des erreurs de jugement de type.

Pour plus de contenu lié à PHP, veuillez vous référer à Gitbox.net/PHP-Tutorial .