W3docs

floor()

Die PHP-Funktion floor() rundet eine Zahl auf die nächste ganze Zahl ab – immer in Richtung negativer Unendlichkeit.

Die Funktion floor() in PHP rundet eine Zahl nach unten auf die nächste ganze Zahl – das heißt, sie gibt die größte ganze Zahl zurück, die kleiner oder gleich dem übergebenen Wert ist. „Nach unten" bedeutet hier immer in Richtung negativer Unendlichkeit, was die meisten Menschen falsch verstehen. Diese Seite behandelt die Syntax, das Verhalten von floor() bei positiven und negativen Zahlen, den Rückgabetyp und wann man floor() anstelle von ceil(), round() oder intdiv() verwenden sollte.

Syntax

floor(int|float $num): float
  • $num — der abzurundende Wert. Er kann ein int oder ein float sein.
  • Rückgabewert — das Ergebnis wird immer als float zurückgegeben, auch wenn es eine ganze Zahl darstellt. floor(7) liefert also 7.0, nicht 7. Wenn Sie einen echten Integer benötigen, casten Sie das Ergebnis: (int) floor($num).

Ein einfaches Beispiel

php— editable, runs on the server

Wir weisen $number einen float zu, übergeben ihn an floor(), und die Funktion gibt 3 zurück – die größte ganze Zahl, die nicht größer als 3.14 ist. Alles nach dem Dezimalpunkt wird bei positiven Zahlen einfach verworfen.

Wie floor() mit negativen Zahlen umgeht

Das ist der Teil, bei dem viele einen Fehler machen. floor() rundet in Richtung negativer Unendlichkeit, sodass ein negativer Wert weg von null gerundet wird, nicht auf null zu.

<?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)
?>

Bei -4.7 sind die darunter liegenden ganzen Zahlen -5, -6, ...; die größte davon ist -5. Wenn Sie -4 möchten (Rundung in Richtung null), würden Sie stattdessen ceil() oder einen Cast wie (int) -4.7 verwenden.

floor() vs. ceil() vs. round()

Diese drei Funktionen geben alle ganze Zahlen zurück, unterscheiden sich aber in der Richtung:

FunktionRichtungfloor(2.5) / ceil(2.5) / round(2.5)
floor()Immer nach unten (in Richtung −∞)2.0
ceil()Immer nach oben (in Richtung +∞)3.0
round()Zur nächsten, Hälften standardmäßig nach oben3.0
<?php
echo floor(2.5); // 2
echo "\n";
echo ceil(2.5);  // 3
echo "\n";
echo round(2.5); // 3
?>

Wann würde ich floor() verwenden?

floor() kommt immer dann zum Einsatz, wenn man eine ganze Zahl braucht, die niemals überschießen darf:

  • Paginierung — Anzahl vollständiger Seiten: floor($totalItems / $perPage).
  • Zeit/Einheiten — ganze Stunden aus Minuten: floor($minutes / 60).
  • Geld/Mengen — wie viele ganze Artikel in ein Budget passen: floor($budget / $price).
<?php
$totalItems = 47;
$perPage    = 10;

$fullPages = floor($totalItems / $perPage);
echo "Full pages: " . $fullPages; // Full pages: 4
?>

Hinweis: Für die Integer-Division können Sie auch intdiv() verwenden, das einen echten int zurückgibt und klarer ist, wenn beide Operanden Integer sind. Verwenden Sie floor(), wenn floats im Spiel sind.

Fazit

floor() rundet immer in Richtung negativer Unendlichkeit ab und gibt einen float zurück. Beachten Sie, dass negative Zahlen weg von null gerundet werden, und casten Sie das Ergebnis zu (int), wenn Sie einen Integer-Typ benötigen. Für die entgegengesetzte Richtung verwenden Sie ceil(), für das Runden auf den nächsten Wert verwenden Sie round(), und für die Formatierung von Zahlen mit Tausendertrennzeichen siehe number_format().

Übungen

Übung
Was macht die Funktion floor() in PHP?
Was macht die Funktion floor() in PHP?
Was this page helpful?