PHP 8.4.2 Released!

BCMath Rechnen mit beliebiger Genauigkeit

  • Einführung
  • Installation/Konfiguration
  • BC Math Funktionen
    • bcadd — Addition zweier Zahlen beliebiger Genauigkeit
    • bcceil — Round up arbitrary precision number
    • bccomp — Vergleich zweier Zahlen beliebiger Genauigkeit
    • bcdiv — Division zweier Zahlen beliebiger Genauigkeit
    • bcdivmod — Get the quotient and modulus of an arbitrary precision number
    • bcfloor — Round down arbitrary precision number
    • bcmod — Modulo zweier Zahlen mit beliebiger Genauigkeit
    • bcmul — Multiplikation zweier Zahlen beliebiger Genauigkeit
    • bcpow — Potenz einer Zahl beliebiger Genauigkeit
    • bcpowmod — Potenz einer Zahl beliebiger Genauigkeit, vermindert um ein angegebenen Modulo
    • bcround — Round arbitrary precision number
    • bcscale — Setzt oder holt die Genauigkeit aller BCmath-Funktionen
    • bcsqrt — Ermittelt die Quadratwurzel einer Zahl beliebiger Genauigkeit
    • bcsub — Subtrahiert zwei Zahlen beliebiger Genauigkeit
add a note

User Contributed Notes 3 notes

up
77
Hayley Watson
9 years ago
This extension is an interface to the GNU implementation as a library of the Basic Calculator utility by Philip Nelson; hence the name.
up
26
volek at adamv dot cz
9 years ago
Note that when you use implementation of factorial that ClaudiuS made, you get results even if you try to calculate factorial of number that you normally can't, e.g. 2.5, -2, etc. Here is safer implementation:
<?php
/**
* Calculates a factorial of given number.
* @param string|int $num
* @throws InvalidArgumentException
* @return string
*/
function bcfact($num)
{
if (!
filter_var($num, FILTER_VALIDATE_INT) || $num <= 0) {
throw new
InvalidArgumentException(sprintf('Argument must be natural number, "%s" given.', $num));
}

for (
$result = '1'; $num > 0; $num--) {
$result = bcmul($result, $num);
}

return
$result;
}
?>
up
18
ClaudiuS
11 years ago
Needed to compute some permutations and found the BC extension great but poor on functions, so untill this gets implemented here's the factorial function:

<?php
/* BC FACTORIAL
* n! = n * (n-1) * (n-2) .. 1 [eg. 5! = 5 * 4 * 3 * 2 * 1 = 120]
*/
function bcfact($n){
$factorial=$n;
while (--
$n>1) $factorial=bcmul($factorial,$n);
return
$factorial;
}

print
bcfact(50);
//30414093201713378043612608166064768844377641568960512000000000000
?>
To Top