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érezis_float()— le comportement est identique, la fonction est prise en charge et plus lisible. Cette page documenteis_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): boolElle 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 :
$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")estfalse. Les entrées utilisateur provenant de formulaires ou de$_GETarrivent sous forme de chaînes ; validez d'abord avecis_numeric(), puis convertissez avecfloatval(). - Ne comparez pas les floats pour une égalité exacte. En raison des arrondis binaires,
0.1 + 0.2 == 0.3estfalse. Comparez plutôt avec une petite tolérance. is_doubleest supprimé dans PHP 8+. L'appeler sous PHP 8.0 ou une version ultérieure déclenche uneErrorfatale :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.