floor()
Découvrez la fonction floor() en PHP, qui arrondit un nombre vers le bas à l'entier inférieur le plus proche.
La fonction floor() en PHP arrondit un nombre vers le bas à l'entier le plus proche — c'est-à-dire qu'elle retourne le plus grand entier inférieur ou égal à la valeur fournie. « Vers le bas » signifie ici toujours en direction de moins l'infini, ce qui est le détail que la plupart des gens oublient. Cette page couvre la syntaxe, le comportement de floor() avec des nombres positifs et négatifs, le type retourné, et quand l'utiliser plutôt que ceil(), round() ou intdiv().
Syntaxe
floor(int|float $num): float$num— la valeur à arrondir vers le bas. Elle peut être unintou unfloat.- Valeur de retour — le résultat est toujours retourné sous forme de
float, même lorsqu'il représente un nombre entier. Ainsi,floor(7)donne7.0, et non7. Si vous avez besoin d'un entier réel, convertissez le résultat :(int) floor($num).
Un exemple de base
Nous affectons un float à $number, le passons à floor(), et la fonction retourne 3 — le plus grand entier qui n'est pas supérieur à 3.14. Tout ce qui suit la virgule décimale est simplement écarté pour les nombres positifs.
Comment floor() gère les nombres négatifs
C'est la partie qui pose problème. floor() arrondit en direction de moins l'infini, donc une valeur négative est arrondie en s'éloignant de zéro, et non en s'en approchant.
<?php
echo floor(4.7); // 4
echo "\n";
echo floor(-4.7); // -5 (down means more negative)
echo "\n";
echo floor(-4.1); // -5
echo "\n";
echo floor(8); // 8 (already an integer)
?>Pour -4.7, les entiers inférieurs sont -5, -6, ... ; le plus grand d'entre eux est -5. Si vous voulez -4 (arrondi vers zéro), utilisez plutôt ceil() ou une conversion comme (int) -4.7.
floor() vs. ceil() vs. round()
Ces trois fonctions retournent toutes des nombres entiers mais diffèrent par leur direction :
| Fonction | Direction | floor(2.5) / ceil(2.5) / round(2.5) |
|---|---|---|
floor() | Toujours vers le bas (vers −∞) | 2.0 |
ceil() | Toujours vers le haut (vers +∞) | 3.0 |
round() | Au plus proche, les moitiés vers le haut par défaut | 3.0 |
<?php
echo floor(2.5); // 2
echo "\n";
echo ceil(2.5); // 3
echo "\n";
echo round(2.5); // 3
?>Quand utiliser floor() ?
floor() intervient chaque fois que vous avez besoin d'un nombre entier qui ne doit jamais dépasser la valeur réelle :
- Pagination — nombre de pages complètes :
floor($totalItems / $perPage). - Temps/unités — heures entières à partir des minutes :
floor($minutes / 60). - Argent/quantités — combien d'articles entiers rentrent dans un budget :
floor($budget / $price).
<?php
$totalItems = 47;
$perPage = 10;
$fullPages = floor($totalItems / $perPage);
echo "Full pages: " . $fullPages; // Full pages: 4
?>Remarque : Pour la division entière, vous pouvez aussi utiliser
intdiv(), qui retourne un vraiintet est plus explicite lorsque les deux opérandes sont des entiers. Utilisezfloor()lorsque des floats sont impliqués.
Conclusion
floor() arrondit toujours vers le bas en direction de moins l'infini et retourne un float. Gardez à l'esprit que les nombres négatifs sont arrondis en s'éloignant de zéro, et convertissez en (int) si vous avez besoin d'un type entier. Pour la direction opposée, utilisez ceil() ; pour l'arrondi à la valeur la plus proche, utilisez round() ; et pour mettre en forme des nombres avec des séparateurs de milliers, consultez number_format().