PHPKonf İstanbul PHP Conference 2015

BCMath - arytmetyka liczb dużej precyzji

add a note add a note

User Contributed Notes 3 notes

up
7
George Lund
1 year ago
It's worth noting that this library is named very wrongly.

It may be called 'Binary Calculator', but what you're getting is a decimal calculator that can represent base-10 fractions accurately.
up
5
volek at adamv dot cz
5 months 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
5
ClaudiuS
2 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