Start · Sprachen · PHP · Referenz · bcceil

bcceil

Funktion

Rundet eine beliebig genaue Dezimalzahl (als String) auf die nächste ganze Zahl nach oben und gibt das Ergebnis als String zurück.

seit PHP 8.4.0 Kategorie: math

Signatur

bcceil(string $num): string

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

Typ
string
Beschreibung
Gibt die aufgerundete ganze Zahl als Zeichenkette zurück, z. B. '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
4 8 5 -3 -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;
Benötigte Pakete: 123456789012345679

// 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.