Signatur
Beschreibung
bcceil() ist Teil der BCMath-Erweiterung und rundet eine beliebig genaue Zahl, die als Dezimal-String übergeben wird, auf die nächste ganze Zahl in Richtung positiv Unendlich auf (analog zu ceil() für reguläre Fließkommazahlen). Die Funktion arbeitet dabei ohne den Präzisionsverlust, der bei float-Typen auftreten kann.
Diese Funktion ist besonders nützlich, wenn mit sehr großen oder sehr präzisen Zahlen gearbeitet wird, beispielsweise in Finanzsystemen, Währungsumrechnungen oder bei wissenschaftlichen Berechnungen, bei denen die native float-Arithmetik nicht ausreichend genau ist.
Im Unterschied zu bcround() oder bcfloor() rundet bcceil() immer in Richtung der positiven Unendlichkeit: positive Dezimalzahlen werden stets aufgerundet, negative Dezimalzahlen in Richtung null gerundet.
Die Funktion erfordert die BCMath-Erweiterung, die in den meisten PHP-Installationen standardmäßig aktiviert ist. Sie gibt das Ergebnis immer als Zeichenkette ohne Nachkommastellen zurück.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $num Pflicht | string | Die beliebig genaue Dezimalzahl als Zeichenkette (z. B. '3.14' oder '-7.9'), die aufgerundet werden soll. |
Rückgabewert
'4' für '3.14'. Bei negativen Zahlen wird in Richtung null gerundet, also ergibt '-7.9' den Wert '-7'.Beispiele
Einfaches Aufrunden positiver und negativer Zahlen
<?php
// Positive Dezimalzahl aufrunden
echo bcceil('3.14') . PHP_EOL; // 4
echo bcceil('7.0001') . PHP_EOL; // 8
echo bcceil('5.0') . PHP_EOL; // 5
// Negative Dezimalzahl aufrunden (Richtung null)
echo bcceil('-3.14') . PHP_EOL; // -3
echo bcceil('-7.9') . PHP_EOL; // -7
Einsatz in einer Finanzberechnung mit sehr großen Zahlen
<?php
// Berechnung der benötigten Pakete für eine sehr große Stückzahl
// Jedes Paket fasst 1000 Einheiten
$gesamtStueck = '123456789012345678.7';
$einheitenProPaket = '1000';
$rohwert = bcdiv($gesamtStueck, $einheitenProPaket, 20);
$pakete = bcceil($rohwert);
echo 'Benötigte Pakete: ' . $pakete . PHP_EOL;
// Wichtig · Fallstricke
Verfügbarkeit: bcceil() wurde in PHP 8.4.0 eingeführt. Für ältere PHP-Versionen muss eine eigene Implementierung verwendet werden, z. B. mithilfe von bccomp(), bcadd() und Zeichenkettenoperationen.
Eingabevalidierung: Ungültige Zeichenketten (z. B. 'abc') führen seit PHP 8.0 zu einem ValueError. Stellen Sie sicher, dass die übergebene Zeichenkette eine gültige Dezimalzahl darstellt.
Kein Skalierungsparameter: Im Gegensatz zu vielen anderen BCMath-Funktionen wie bcadd() akzeptiert bcceil() keinen $scale-Parameter, da das Ergebnis immer eine ganze Zahl ist.