W3docs

is_double()

is_double() est un alias déprécié de is_float() en PHP. Il vérifie si une variable est un nombre à virgule flottante ou non.

Introduction

is_double() était un alias de is_float() qui vérifie si une variable contient un nombre à virgule flottante. Un float (également appelé double) est le type de données que PHP utilise pour les nombres avec une partie fractionnaire, comme 3.14 ou 1.0e6.

Important : is_double() a été déprécié il y a longtemps et supprimé dans PHP 8.0.0. Quelle que soit la version de PHP, préférez is_float() — le comportement est identique, la fonction est prise en charge et plus lisible. Cette page documente is_double() afin que vous puissiez reconnaître et migrer le code hérité qui l'utilise encore.

Ce chapitre couvre la syntaxe, ce qui compte comme un float, le comportement de la valeur de retour, le remplacement recommandé et les pièges courants.

Syntaxe

is_double(mixed $value): bool

Elle prend un seul paramètre, $value, la variable à tester, et retourne true si $value est de type float, false sinon. La vérification porte sur le type, et non sur l'apparence décimale du nombre — voir les pièges ci-dessous.

Ce qui compte comme un float

is_double() (et is_float()) retourne true uniquement lorsque le type d'exécution de la variable est float. Les chaînes numériques et les entiers à valeur entière ne sont pas des floats :

<?php
var_dump(is_float(3.14));    // bool(true)
var_dump(is_float(1.0e6));   // bool(true)  — scientific notation is a float
var_dump(is_float(42));      // bool(false) — this is an int
var_dump(is_float("3.14"));  // bool(false) — this is a string
var_dump(is_float(10 / 2));  // bool(true)  — division always yields a float in PHP
?>

Notez que 10 / 2 donne true : en PHP, l'opérateur / produit toujours un float, même lorsque le résultat est mathématiquement un nombre entier.

Exemple d'utilisation

Comme l'affichage de booléens peut être trompeur (true affiche 1, false n'affiche rien), utilisez var_dump() pour voir le vrai résultat :

php— editable, runs on the server

$price est un vrai float, donc la vérification est true. $count est un entier et $label est une chaîne, donc les deux sont false.

Le remplacement moderne : is_float()

Remplacer is_double() est un simple renommage — les arguments et la valeur de retour sont identiques :

<?php
// Legacy (removed in PHP 8.0)
// if (is_double($value)) { ... }

// Modern, supported everywhere
$value = 9.99;
if (is_float($value)) {
    echo "It's a float";
}
?>

Si vous devez accepter des nombres qui pourraient être un float, un entier ou une chaîne numérique (par exemple, une saisie de formulaire), utilisez plutôt is_numeric(), ou convertissez avec floatval().

Pièges courants

  • Les chaînes numériques échouent à la vérification. is_float("3.14") est false. Les entrées utilisateur provenant de formulaires ou de $_GET arrivent sous forme de chaînes ; validez d'abord avec is_numeric(), puis convertissez avec floatval().
  • Ne comparez pas les floats pour une égalité exacte. En raison des arrondis binaires, 0.1 + 0.2 == 0.3 est false. Comparez plutôt avec une petite tolérance.
  • is_double est supprimé dans PHP 8+. L'appeler sous PHP 8.0 ou une version ultérieure déclenche une Error fatale : Call to undefined function is_double().

Voir aussi

  • is_float() — la fonction actuelle et prise en charge.
  • is_int() — tester les entiers.
  • is_numeric() — tester les nombres ou les chaînes numériques.
  • floatval() — convertir une valeur en float.
  • gettype() — inspecter directement le type d'une variable.

Conclusion

is_double() est un alias supprimé de is_float(). Pour le nouveau code, utilisez toujours is_float() pour tester si une valeur est un nombre à virgule flottante, et gardez is_double() à l'esprit uniquement pour mettre à jour les projets hérités lors de leur migration vers PHP 8 ou une version ultérieure.

Pratique

Pratique
Quelle est la fonction de la fonction 'is_double' en PHP ?
Quelle est la fonction de la fonction 'is_double' en PHP ?
Was this page helpful?