bcdiv

(PHP 4, PHP 5, PHP 7, PHP 8)

bcdivDivide due numeri a precisione arbitraria

Descrizione

bcdiv(string $num1, string $num2, ?int $scale = null): string

Divide num1 per num2.

Elenco dei parametri

num1

Il dividendo, come stringa.

num2

Il divisore, come stringa.

scale
Questo parametro viene utilizzato per impostare il numero di cifre dopo la virgola nel risultato. Se è null, verrà utilizzato il valore predefinito impostato con bcscale(), o in alternativa il valore della direttiva INI bcmath.scale.

Valori restituiti

Restituisce il risultato della divisione come stringa.

Errori/Eccezioni

Questa funzione genera un'eccezione ValueError nei seguenti casi:

  • num1 o num2 non è una stringa numerica BCMath ben formata.
  • scale è al di fuori dell'intervallo valido.

Questa funzione genera un'eccezione DivisionByZeroError se num2 è 0.

Log delle modifiche

Versione Descrizione
8.0.0 scale ora può essere null.
8.0.0 Dividendo per 0 ora genera un' eccezione DivisionByZeroError invece di restituire null.

Esempi

Example #1 Esempio di bcdiv()

<?php

echo bcdiv('105', '6.55957', 3); // 16.007

?>

Vedere anche:

  • bcdivmod() - Get the quotient and modulus of an arbitrary precision number
  • bcmod() - Ricava il modulo di un numero a precisione arbitraria
  • bcmul() - Moltiplica due numeri a precisione arbitraria
  • BcMath\Number::div()

add a note

User Contributed Notes 1 note

up
0
MM
17 years ago
Perhaps some one can find useful this function to compute the modular inverse of a integer (extended euclidean algorithm):

function invmod($a,$b) {
$n=$b;
$x=0; $lx=1; $y=1; $ly=0;
while ($b) {
$t=$b;
$q=bcdiv($a,$b,0);
$b=bcmod($a,$b);
$a=$t;
$t=$x; $x=bcsub($lx,bcmod(bcmul($q,$x),$n)); $lx=$t;
$t=$y; $y=bcsub($ly,bcmod(bcmul($q,$y),$n)); $ly=$t;
}
if (bccomp($lx,0) == -1)
$lx=bcadd($lx,$n);
return $lx;
}

// verify

$n="2447995268898324993537772139997802321";
$t="64941057316178801556773346239351236811";
$m="123456789";
$i=invmod($t,$n);
// (t*m)*inv(t) is m
echo bcmod(bcmul(bcmod(bcmul($t,$m),$n),$i),$n) == $m;
To Top