Les nombres à virgule flottante (aussi connus comme "floats",
  "doubles", ou  "nombres réels")
  peuvent être spécifiés en utilisant les syntaxes suivantes :
 
<?php
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;
$d = 1_234.567; // à partir de PHP 7.4.0
?>
Formellement à partir de PHP 7.4.0 (auparavant, les underscores n'étaient pas autorisé) :
LNUM          [0-9]+(_[0-9]+)*
DNUM          ([0-9]*(_[0-9]+)*[\.]{LNUM}) | ({LNUM}[\.][0-9]*(_[0-9]+)*)
EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})
La taille d'un nombre décimal est dépendante de la plate-forme, cependant, un nombre maximal d'environ 1.8e308 avec une précision sur 14 chiffres est une valeur commune (format 64 bits IEEE).
Les nombres flottants ont une précision limitée. Même s'ils dépendent du système, PHP utilise le format de précision des décimaux IEEE 754, qui donnera une erreur maximale relative de l'ordre de 1.11e-16 (dûe aux arrondis). Les opérations arithmétiques non-élémentaires peuvent donner des erreurs plus importantes et bien sûr les erreurs doivent être prises en compte lorsque plusieurs opérations sont liées.
   Aussi, les nombres rationnels exactement représentables sous forme de nombre à virgule
   flottante en base 10, comme 0.1 ou 0.7, n'ont pas
   de représentation exacte comme nombres à virgule flottante en base 2, utilisée en
   interne, et ce quelle que soit la taille de la mantisse. De ce fait, ils ne peuvent
   être convertis sans une petite perte de précision. Ceci peut mener à des résultats
   confus: par exemple, floor((0.1+0.7)*10) retournera normalement
   7 au lieu de 8 attendu, car la représentation
   interne sera quelque chose comme 7.9999999999999991118....
  
Ainsi, ne faites jamais confiance aux derniers chiffres d'un nombre flottant, mais aussi, ne comparez pas l'égalité de 2 nombres flottant directement. Si une plus grande précision est nécessaire, les fonctions mathématiques de précision arbitraire et les fonctions gmp sont disponibles.
Pour une explication "simple", voir le » guide relatif aux nombres à virgule flottante.
    Si une chaîne est
    numérique
    ou numérique de tête alors elle sera transformée en sa valeur flottante
    correspondante, sinon elle sera convertie à zéro(0).
   
Pour les valeurs d'autres types, la conversion est effectuée en convertissant la valeur d'abord en int puis en float. Voir conversion en entier pour plus d'informations.
Note:
Comme certains types ont un comportement indéfinie lors de la conversion en int, ceci est aussi le cas lors de la conversion en float.
Comme dit dans la note ci-dessus, le test d'égalité des valeurs de nombres flottants est problématique, en raison de la façon dont ils sont représentés en interne. Cependant, il existe des façons de réaliser cette comparaison.
   Pour tester l'égalité de valeurs de nombres flottants, une borne supérieure
   de l'erreur relative à l'arrondi est utilisée. Cette valeur est connue
   comme étant l'epsilon de la machine, ou le unit roundoff,
   et est la différence la plus petite acceptable dans les calculs.
  
$a et $b sont égaux sur 5 nombres après la virgule.
<?php
$a = 1.23456789;
$b = 1.23456780;
$epsilon = 0.00001;
if(abs($a-$b) < $epsilon) {
    echo "true";
}
?>
   Quelques opérations numériques peuvent donner comme résultat une valeur
   représentée par la constante NAN. Ce résultat représente
   une valeur indéfinie ou non représentable lors de calculs avec des nombres
   à virgule flottante. Toute comparaison, même stricte de cette valeur avec
   une autre valeur, y compris cette constante elle-même, sauf si elle est
   égale à true, donnera une valeur de false.
  
   En raison du fait que NAN représente tout nombre de valeur
   différente, NAN ne doit pas être comparé à d'autres valeurs,
   y compris cette constante elle-même, et à la place, elle doit être vérifiée
   en utilisant la fonction is_nan().