W3docs

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 un int ou un float.
  • 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) donne 7.0, et non 7. Si vous avez besoin d'un entier réel, convertissez le résultat : (int) floor($num).

Un exemple de base

php— editable, runs on the server

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 :

FonctionDirectionfloor(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éfaut3.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 vrai int et est plus explicite lorsque les deux opérandes sont des entiers. Utilisez floor() 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().

Pratique

Pratique
Que fait la fonction floor() en PHP ?
Que fait la fonction floor() en PHP ?
Was this page helpful?