is_float()
La fonction is_float() en PHP vérifie si une variable est de type float. Apprenez sa syntaxe, ses cas particuliers et ses fonctions similaires.
Introduction
is_float() est une fonction PHP intégrée qui vérifie si une variable contient une valeur en virgule flottante (un nombre avec une partie décimale, comme 3.14). Elle retourne un boolean, ce qui en fait le moyen standard de confirmer qu'une valeur est un float avant d'exécuter une logique réservée aux floats.
Un point essentiel à comprendre dès le départ : is_float() teste le type de la variable, pas sa valeur mathématique. L'entier 5 et le float 5.0 sont égaux en valeur, mais seul 5.0 est un float. "3.14" (une chaîne de chiffres) n'est pas un float non plus — même si cela y ressemble.
Cette page couvre la syntaxe, les cas courants et les surprises, les différences entre is_float() et les fonctions similaires, et les situations où vous l'utiliserez réellement.
Syntaxe
is_float(mixed $value): bool| Partie | Signification |
|---|---|
$value | La variable à tester. Tout type est accepté. |
| Valeur de retour | true si $value est de type float, sinon false. |
is_double() est un alias de is_float() — ils se comportent de manière identique, utilisez donc celui dont le nom vous semble le plus lisible.
Exemple de base
Lorsque vous utilisez echo avec un boolean, PHP affiche 1 pour true et une chaîne vide pour false — c'est pourquoi la deuxième ligne semble vide. Pour voir un libellé clair, utilisez var_dump() à la place :
<?php
var_dump(is_float(3.14)); // bool(true)
var_dump(is_float(42)); // bool(false)
?>Ce qui compte comme un float (et ce qui ne l'est pas)
Le piège principal est qu'une chaîne numérique n'est pas un float. is_float() ne retourne true que pour les valeurs réellement stockées avec le type float.
<?php
var_dump(is_float(3.14)); // bool(true) — float literal
var_dump(is_float(1.5e3)); // bool(true) — scientific notation = 1500.0
var_dump(is_float(0.0)); // bool(true) — zero is still a float
var_dump(is_float(10)); // bool(false) — integer, not float
var_dump(is_float("3.14")); // bool(false) — string, even though it looks like one
var_dump(is_float(3.14 + 1)); // bool(true) — float arithmetic yields a float
var_dump(is_float(10 / 3)); // bool(true) — division produces a float
?>Notez que 10 / 3 est un float même si les deux opérandes sont des entiers : la division PHP retourne un float dès que le résultat n'est pas un nombre entier.
Gestion des chaînes numériques
Si votre valeur peut être une chaîne numérique (par exemple, depuis $_GET, $_POST ou un fichier CSV), is_float() retournera false. Utilisez is_numeric() pour détecter les chaînes numériques, ou effectuez un cast au préalable :
<?php
$input = "9.99"; // e.g. a price submitted from a form
var_dump(is_float($input)); // bool(false) — it's a string
var_dump(is_numeric($input)); // bool(true) — looks like a number
var_dump(is_float((float) $input)); // bool(true) — cast it first
?>Pour une couverture complète de la détection d'entrées numériques, consultez is_numeric() et PHP Data Types.
Un garde pratique
Un usage courant consiste à valider une valeur avant d'effectuer des calculs qui n'ont de sens que sur un float :
<?php
function applyDiscount(mixed $price, float $rate): float
{
if (!is_float($price)) {
// normalize numeric strings/ints into a float
$price = (float) $price;
}
return $price - ($price * $rate);
}
echo applyDiscount(49.99, 0.10) . "\n"; // 44.991
echo applyDiscount("20", 0.25) . "\n"; // 15
?>Fonctions de vérification de type associées
| Fonction | Retourne true quand la valeur est… |
|---|---|
is_float() / is_double() | un float (3.14, 1.5e3) |
is_int() | un entier (42) |
is_string() | une chaîne ("3.14") |
is_numeric() | un nombre ou une chaîne numérique |
is_bool() | un boolean (true/false) |
Si vous avez juste besoin de savoir « est-ce un nombre quelconque, y compris une version en chaîne », utilisez is_numeric(). Si vous avez spécifiquement besoin du type float, utilisez is_float().
Conclusion
is_float() (et son alias is_double()) vérifie si le type d'une variable est float, en retournant un boolean. Gardez à l'esprit qu'elle teste le type, pas la valeur : les entiers et les chaînes numériques retournent tous deux false, même lorsqu'ils représentent des nombres à décimales. Lorsque vous travaillez avec des entrées utilisateur — qui arrivent sous forme de chaînes — associez-la à is_numeric() ou castez avec (float) avant de traiter une valeur comme un float.