W3docs

floatval()

La fonction floatval() est une fonction PHP intégrée qui convertit une variable en nombre flottant. Elle est similaire à doubleval().

Introduction

La fonction floatval() est une fonction PHP intégrée qui retourne la valeur flottante (virgule flottante) d'une variable. On y recourt lorsqu'on dispose d'une valeur dont le type est incertain — généralement une string provenant d'un formulaire, d'une chaîne de requête, d'un fichier CSV ou d'une charge JSON — et qu'on souhaite s'assurer de travailler avec un nombre sur lequel effectuer des calculs arithmétiques.

floatval() est un alias de doubleval(). PHP ne possède pas de type double distinct — float et double désignent la même chose — si bien que les deux fonctions sont interchangeables ; floatval() est l'orthographe à privilégier dans le nouveau code.

Cette page couvre la syntaxe, la façon dont la fonction analyse différentes entrées (y compris la règle surprenante au premier abord concernant les strings), la comparaison avec le cast (float), ainsi que les pièges à connaître.

Syntaxe

float floatval(mixed $value)

Elle prend un seul argument, $value, et retourne sa valeur float. L'argument doit être un scalaire (string, int, float ou boolean) ; passer un array retourne 1.0 pour un array non vide et 0.0 pour un array vide, et passer un object génère une erreur.

Exemple d'utilisation

L'exemple ci-dessous convertit plusieurs types différents et affiche le résultat. Notez que floatval() retourne un float, mais lorsque PHP affiche un float entier avec echo, il omet le .0 final — ainsi 42.0 s'affiche comme 42.

php— editable, runs on the server

Ici $var1 est une string numérique, $var2 est un entier, $var3 est un boolean et $var4 est une string sans nombre en début. Chacun est converti en float. Pour confirmer que le résultat est bien un float (plutôt que de se fier à ce qu'affiche echo), encapsulez une valeur dans var_dump() : var_dump(floatval(42)); affiche float(42).

Comment les strings sont analysées

C'est la partie qui surprend les développeurs. Lorsqu'on lui passe une string, floatval() lit la portion numérique initiale et s'arrête au premier caractère ne pouvant pas faire partie d'un nombre. La string entière n'a pas besoin d'être numérique.

<?php
echo floatval("12.5abc") . "\n"; // 12.5  (stops at "a")
echo floatval("  7.0kg")  . "\n"; // 7     (leading whitespace is skipped)
echo floatval("1.0e3")    . "\n"; // 1000  (scientific notation is understood)
echo floatval("$199.99")  . "\n"; // 0     (starts with "$", no leading number)
echo floatval("0x1A")     . "\n"; // 0     (hex strings are NOT parsed)
echo floatval("")         . "\n"; // 0     (empty string)
?>

Les règles essentielles :

  • Les espaces en début de chaîne sont ignorés ; l'analyse commence au premier caractère non-espace.
  • La notation scientifique (1.0e3) et un signe initial (-3.5, +2) sont reconnus.
  • L'analyse s'arrête au premier caractère non numérique, et tout ce qui suit est ignoré.
  • S'il n'y a pas de nombre en début de chaîne, le résultat est 0.0. Ainsi une string de devise comme "$199.99" donne 0, et non 199.99 — supprimez d'abord le symbole.
  • Les strings hexadécimales telles que "0x1A" sont traitées comme le nombre 0, car l'analyse s'arrête au x.

floatval() vs. le cast (float)

floatval($x) et (float) $x produisent le même résultat pour des entrées scalaires ; pour une valeur unique, le cast est donc plus court :

<?php
$price = "49.95 USD";
echo floatval($price) . "\n"; // 49.95
echo (float) $price   . "\n"; // 49.95
?>

L'avantage de floatval() est qu'elle est appelable (callable). On peut la passer directement aux fonctions d'ordre supérieur là où un mot-clé de cast ne peut pas aller :

<?php
$inputs = ["1.5", "2.25", "x", "3"];
$floats = array_map('floatval', $inputs);
print_r($floats);
// Array ( [0] => 1.5 [1] => 2.25 [2] => 0 [3] => 3 )
?>

Si vous avez besoin d'une validation stricte — rejeter tout ce qui n'est pas un nombre propre plutôt que de le contraindre silencieusement — utilisez is_numeric() ou filter_var($x, FILTER_VALIDATE_FLOAT) avant la conversion, car floatval() ne signale jamais d'échec.

Quand l'utiliser

  • Normaliser les entrées utilisateur ($_POST, $_GET) ou les données CSV/texte avant d'effectuer des calculs.
  • Comme callback pour array_map(), les comparaisons usort() et autres fonctions similaires.
  • Convertir une valeur dont on ne contrôle pas le type en un float garanti.

Si vous souhaitez un entier à la place, utilisez intval() ; pour changer le type d'une variable en place, utilisez settype() ; pour vérifier un type, utilisez gettype() ou is_float(). Pour une vue d'ensemble de la gestion des types en PHP, consultez PHP Data Types.

Conclusion

floatval() retourne la valeur flottante de tout scalaire et ne lève jamais d'exception en cas de mauvaise entrée — elle revient à 0.0 à la place. Cela la rend pratique, mais signifie également que vous devriez valider en amont lorsqu'un nombre manquant ou mal formé doit être traité comme une erreur. Rappelez-vous la règle de la string numérique initiale ("12.5abc" devient 12.5, "$199.99" devient 0), et préférez floatval() à un cast chaque fois que vous devez passer la conversion en tant que callback.

Pratique

Pratique
Quelle est la fonction et l'utilisation de floatval en PHP ?
Quelle est la fonction et l'utilisation de floatval en PHP ?
Was this page helpful?