Start · Sprachen · PHP · Referenz · gmp_div

gmp_div

Funktion

Dividiert zwei GMP-Zahlen (ganzzahlig) und gibt den Quotienten zurück — Alias von <code>gmp_div_q()</code>.

seit PHP 4.0.4 Kategorie: math

Signatur

gmp_div(GMP|int|string $num1, GMP|int|string $num2, int $rounding_mode = GMP_ROUND_ZERO): GMP

Beschreibung

gmp_div() ist ein direkter Alias der Funktion gmp_div_q() und führt eine ganzzahlige Division zweier beliebig großer Ganzzahlen durch, die als GMP-Objekte, PHP-int- oder numerische string-Werte übergeben werden können. Das Ergebnis ist der Quotient (ohne Rest).

Der optionale Parameter $rounding_mode steuert, wie der Quotient bei negativen Zahlen gerundet wird. Standardmäßig wird gegen null gerundet (GMP_ROUND_ZERO). Alternativ stehen GMP_ROUND_PLUSINF (Runden in Richtung +∞) und GMP_ROUND_MINUSINF (Runden in Richtung −∞) zur Verfügung.

Die Funktion eignet sich immer dann, wenn mit sehr großen Ganzzahlen gearbeitet wird, die den Wertebereich normaler PHP-Integer überschreiten. Die GMP-Erweiterung ermöglicht dabei präzise Berechnungen ohne Genauigkeitsverlust, wie er bei Fließkommazahlen auftreten würde.

Da gmp_div() lediglich ein Alias ist, empfiehlt es sich, direkt gmp_div_q() zu verwenden, um explizit klarzumachen, dass der Quotient (und nicht der Rest) erwünscht ist.

Parameter

Name Typ Default Beschreibung
$num1 Pflicht GMP|int|string Der Dividend — eine GMP-Zahl, ein PHP-Integer oder ein numerischer String.
$num2 Pflicht GMP|int|string Der Divisor — eine GMP-Zahl, ein PHP-Integer oder ein numerischer String. Darf nicht 0 sein.
$rounding_mode int GMP_ROUND_ZERO Rundungsmodus für den Quotienten: GMP_ROUND_ZERO (gegen null), GMP_ROUND_PLUSINF (Richtung +∞) oder GMP_ROUND_MINUSINF (Richtung −∞).

Rückgabewert

Typ
GMP
Beschreibung
Gibt ein GMP-Objekt zurück, das den ganzzahligen Quotienten der Division enthält. Der Rest wird verworfen.

Beispiele

Einfache ganzzahlige Division großer Zahlen

<?php
// Zwei sehr große Zahlen dividieren
$a = gmp_init('1000000000000000000');
$b = gmp_init('3');

$quotient = gmp_div($a, $b);

echo gmp_strval($quotient); // Rest wird verworfen
333333333333333333

Rundungsverhalten bei negativen Zahlen

<?php
// Division mit negativem Dividend
$a = gmp_init(-7);
$b = gmp_init(2);

// Standard: gegen null runden
$q1 = gmp_div($a, $b, GMP_ROUND_ZERO);
echo 'GMP_ROUND_ZERO:    ' . gmp_strval($q1) . PHP_EOL;

// Richtung +Unendlich runden
$q2 = gmp_div($a, $b, GMP_ROUND_PLUSINF);
echo 'GMP_ROUND_PLUSINF: ' . gmp_strval($q2) . PHP_EOL;

// Richtung -Unendlich runden
$q3 = gmp_div($a, $b, GMP_ROUND_MINUSINF);
echo 'GMP_ROUND_MINUSINF:' . gmp_strval($q3) . PHP_EOL;
GMP_ROUND_ZERO: -3 GMP_ROUND_PLUSINF: -3 GMP_ROUND_MINUSINF:-4

// Wichtig · Fallstricke

Division durch null: Wird 0 als Divisor übergeben, löst PHP einen DivisionByZeroError aus. Der Wert des Divisors sollte daher stets vor dem Aufruf geprüft werden.

Alias-Hinweis: Da gmp_div() lediglich ein Alias von gmp_div_q() ist, sollte für neuen Code bevorzugt gmp_div_q() verwendet werden. Aliase können in zukünftigen PHP-Versionen als veraltet markiert oder entfernt werden.

Zum Abrufen des Rests (Modulo) bieten sich gmp_mod() oder gmp_div_r() an. Wenn sowohl Quotient als auch Rest benötigt werden, ist gmp_div_qr() effizienter als zwei separate Aufrufe.