(PHP 4, PHP 5, PHP 7, PHP 8)
round — Rundet einen Gleitkommawert
$num, int $precision = 0, int|RoundingMode $mode = RoundingMode::HalfAwayFromZero): float
Rundet den Parameter num auf die mit
precision angegebene Anzahl von Nachkommastellen.
precision kann dabei auch Null (Vorgabewert) oder
negativ sein. So wird bei einer Stellenzahl von -1 z. B. auf volle Zehner
gerundet.
numDer zu rundende Wert.
precisionAuf wie viele Nachkommastellen gerundet werden soll.
Ist die Genauigkeit precision positiv, wird
num auf precision
signifikante Stellen nach dem Dezimalpunkt gerundet.
Ist die Genauigkeit precision negativ, wird
num auf precision
signifikante Stellen vor dem Dezimalpunkt gerundet, d. h. auf das
nächste Vielfache von pow(10, -precision), z. B.
wird num mit einer
precision von -1 auf Zehner gerundet, mit einer
precision von -2 auf Hunderter usw.
modeUm den Rundungsmodus festzulegen, kann RoundingMode oder eine der folgenden Konstanten verwendet werden.
| Konstanten | Beschreibung |
|---|---|
PHP_ROUND_HALF_UP |
Rundet num auf halber Strecke von Null weg,
womit 1.5 zu 2 wird und -1.5 zu -2.
|
PHP_ROUND_HALF_DOWN |
Rundet num auf halber Strecke zu Null hin,
womit 1.5 zu 1 wird und -1.5 zu -1.
|
PHP_ROUND_HALF_EVEN |
Rundet num auf halber Strecke auf den
nächsten geraden Wert, womit sowohl 1.5 als auch 2.5 zu 2 werden.
|
PHP_ROUND_HALF_ODD |
Rundet num auf halber Strecke auf den
nächsten ungeraden Wert, womit 1.5 zu 1 wird und 2.5 zu 3.
|
Der auf die angegebene precision gerundete Wert als
Float.
Wenn mode ungültig ist, löst die Funktion einen
ValueError aus.
Vor PHP 8.4.0 wurde bei einem ungültigen Modus automatisch
PHP_ROUND_HALF_UP verwendet.
| Version | Beschreibung |
|---|---|
| 8.4.0 | Vier neue Rundungsmodi wurden hinzugefügt. |
| 8.4.0 |
Es wird nun ein ValueError ausgelöst,
wenn mode ungültig ist.
|
| 8.0.0 |
num akzeptiert keine internen Objekte mehr, die
eine numerische Konvertierung unterstützen.
|
Beispiel #1 round()-Beispiele
<?php
var_dump(round(3.4));
var_dump(round(3.5));
var_dump(round(3.6));
var_dump(round(3.6, 0));
var_dump(round(5.045, 2));
var_dump(round(5.055, 2));
var_dump(round(345, -2));
var_dump(round(345, -3));
var_dump(round(678, -2));
var_dump(round(678, -3));
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
float(3) float(4) float(4) float(4) float(5.05) float(5.06) float(300) float(0) float(700) float(1000)
Beispiel #2 Wie precision eine Gleitkommazahl betrifft
<?php
$number = 135.79;
var_dump(round($number, 3));
var_dump(round($number, 2));
var_dump(round($number, 1));
var_dump(round($number, 0));
var_dump(round($number, -1));
var_dump(round($number, -2));
var_dump(round($number, -3));
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
float(135.79) float(135.79) float(135.8) float(136) float(140) float(100) float(0)
Beispiel #3 mode-Beispiele
<?php
echo 'Rundundsmodi mit 9.5' . PHP_EOL;
var_dump(round(9.5, 0, PHP_ROUND_HALF_UP));
var_dump(round(9.5, 0, PHP_ROUND_HALF_DOWN));
var_dump(round(9.5, 0, PHP_ROUND_HALF_EVEN));
var_dump(round(9.5, 0, PHP_ROUND_HALF_ODD));
echo PHP_EOL;
echo 'Rundundsmodi mit 8.5' . PHP_EOL;
var_dump(round(8.5, 0, PHP_ROUND_HALF_UP));
var_dump(round(8.5, 0, PHP_ROUND_HALF_DOWN));
var_dump(round(8.5, 0, PHP_ROUND_HALF_EVEN));
var_dump(round(8.5, 0, PHP_ROUND_HALF_ODD));
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Rundundsmodi mit 9.5 float(10) float(9) float(10) float(9) Rundundsmodi mit 8.5 float(9) float(8) float(8) float(9)
Beispiel #4 Beispiele für mode mit precision
<?php
echo 'Verwendung von PHP_ROUND_HALF_UP mit einer Dezimalstelle Genauigkeit' . PHP_EOL;
var_dump(round( 1.55, 1, PHP_ROUND_HALF_UP));
var_dump(round(-1.55, 1, PHP_ROUND_HALF_UP));
echo PHP_EOL;
echo 'Verwendung von PHP_ROUND_HALF_DOWN mit einer Dezimalstelle Genauigkeit' . PHP_EOL;
var_dump(round( 1.55, 1, PHP_ROUND_HALF_DOWN));
var_dump(round(-1.55, 1, PHP_ROUND_HALF_DOWN));
echo PHP_EOL;
echo 'Verwendung von PHP_ROUND_HALF_EVEN mit einer Dezimalstelle Genauigkeit' . PHP_EOL;
var_dump(round( 1.55, 1, PHP_ROUND_HALF_EVEN));
var_dump(round(-1.55, 1, PHP_ROUND_HALF_EVEN));
echo PHP_EOL;
echo 'Verwendung von PHP_ROUND_HALF_ODD mit einer Dezimalstelle Genauigkeit' . PHP_EOL;
var_dump(round( 1.55, 1, PHP_ROUND_HALF_ODD));
var_dump(round(-1.55, 1, PHP_ROUND_HALF_ODD));
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Verwendung von PHP_ROUND_HALF_UP mit einer Dezimalstelle Genauigkeit float(1.6) float(-1.6) Verwendung von PHP_ROUND_HALF_DOWN mit einer Dezimalstelle Genauigkeit float(1.5) float(-1.5) Verwendung von PHP_ROUND_HALF_EVEN mit einer Dezimalstelle Genauigkeit float(1.6) float(-1.6) Verwendung von PHP_ROUND_HALF_ODD mit einer Dezimalstelle Genauigkeit float(1.5) float(-1.5)
Beispiel #5 Beispiel für die Verwendung von RoundingMode
<?php
foreach (RoundingMode::cases() as $mode) {
foreach ([
8.5,
9.5,
-3.5,
] as $number) {
printf("%-17s: %+.17g -> %+.17g\n", $mode->name, $number, round($number, 0, $mode));
}
echo "\n";
}
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
HalfAwayFromZero : +8.5 -> +9 HalfAwayFromZero : +9.5 -> +10 HalfAwayFromZero : -3.5 -> -4 HalfTowardsZero : +8.5 -> +8 HalfTowardsZero : +9.5 -> +9 HalfTowardsZero : -3.5 -> -3 HalfEven : +8.5 -> +8 HalfEven : +9.5 -> +10 HalfEven : -3.5 -> -4 HalfOdd : +8.5 -> +9 HalfOdd : +9.5 -> +9 HalfOdd : -3.5 -> -3 TowardsZero : +8.5 -> +8 TowardsZero : +9.5 -> +9 TowardsZero : -3.5 -> -3 AwayFromZero : +8.5 -> +9 AwayFromZero : +9.5 -> +10 AwayFromZero : -3.5 -> -4 NegativeInfinity : +8.5 -> +8 NegativeInfinity : +9.5 -> +9 NegativeInfinity : -3.5 -> -4 PositiveInfinity : +8.5 -> +9 PositiveInfinity : +9.5 -> +10 PositiveInfinity : -3.5 -> -3