# BCMath 任意精度数学

• 简介
• 安装／配置
• 预定义常量
• BC 数学 函数
• bccomp — 比较两个任意精度的数字
• bcdiv — 2个任意精度的数字除法计算
• bcmod — 对一个任意精度数字取模
• bcmul — 2个任意精度数字乘法计算
• bcpow — 任意精度数字的乘方
• bcpowmod — Raise an arbitrary precision number to another, reduced by a specified modulus
• bcscale — 设置所有bc数学函数的默认小数点保留位数
• bcsqrt — 任意精度数字的二次方根
• bcsub — 2个任意精度数字的减法

### User Contributed Notes

Hayley Watson 26-Oct-2015 10:30
``` This extension is an interface to the GNU implementation as a library of the Basic Calculator utility by Philip Nelson; hence the name. ```
volek at adamv dot cz 15-Jan-2015 10:44
``` 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; } ?> ```
George Lund 20-May-2014 09:48
``` 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. ```
ClaudiuS 19-Feb-2013 11:25
``` 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 ?> ```