PHP 8.4.2 Released!

BCMath, funções matemáticas de precisão arbitrária

  • Introdução
  • Instalação/Configuração
  • BC Math Funções
    • bcadd — Adiciona dois números de precisão arbitrária
    • bcceil — Arredonda para cima número de precisão arbitrária
    • bccomp — Compara dois números de precisão arbitrária
    • bcdiv — Divide dois números de precisão arbitrária
    • bcdivmod — Obtém o quociente e o módulo de um número de precisão arbitrário
    • bcfloor — Arredonda para baixo um número de precisão arbitrária
    • bcmod — Obtém o resto de uma divisão com precisão arbitrária
    • bcmul — Multiplica dois números de precisão arbitrária
    • bcpow — Eleva um número de precisão arbitrária a outro
    • bcpowmod — Eleva um número de precisão arbitrária para outro, reduzido por um módulo especificado
    • bcround — Arredonda número de precisão arbitrária
    • bcscale — Configura ou obtêm o parâmetro escala para todas as funções bc
    • bcsqrt — Obtém a raiz quadrada de um número de precisão arbitrária
    • bcsub — Subtrai um número de precisão arbitrária de outro
adicione uma nota

Notas Enviadas por Usuários (em inglês) 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