Вычисления с произвольной точностью BCMath

Коментарии

Автор:
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
?>
2013-02-19 16:25:46
http://php5.kiev.ua/manual/ru/book.bc.html
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($numFILTER_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;
}
?>
2015-01-15 15:44:49
http://php5.kiev.ua/manual/ru/book.bc.html
Автор:
This extension is an interface to the GNU implementation as a library of the Basic Calculator utility by Philip Nelson; hence the name.
2015-10-26 03:30:05
http://php5.kiev.ua/manual/ru/book.bc.html

    Поддержать сайт на родительском проекте КГБ