略微加速

PHP官方手册 - 互联网笔记

PHP - Manual: BC Math

2025-02-27

BCMath 任意精度数学

添加备注

用户贡献的备注 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
10 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
12 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
?>

官方地址:https://www.php.net/manual/en/book.bc.php

北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3