International PHP Conference Berlin 2025

Fonctions BCMath

  • Introduction
  • Installation/Configuration
  • Fonctions BC Math
    • bcadd — Additionne deux nombres de grande taille
    • bcceil — Arrondit au supérieur un nombre de précision arbitraire
    • bccomp — Compare deux nombres de grande taille
    • bcdiv — Divise deux nombres de grande taille
    • bcdivmod — Renvoie le quotient et le reste d'un nombre de précision arbitraire
    • bcfloor — Arrondit à l'inférieur un nombre de précision arbitraire
    • bcmod — Retourne le reste d'une division entre nombres de grande taille
    • bcmul — Multiplie deux nombres de grande taille
    • bcpow — Élève un nombre à une puissance donnée
    • bcpowmod — Calcule le reste modulo d'un nombre élevé à une puissance
    • bcround — Arrondit un nombre de précision arbitraire
    • bcscale — Définit ou récupère la précision par défaut pour toutes les fonctions bc math
    • bcsqrt — Récupère la racine carrée d'un nombre de grande taille
    • bcsub — Soustrait un nombre de grande taille d'un autre
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