0

我知道该函数可以使用阶乘手动计算,问题是较大的数字将无法正确计算。

例如,如果我COMBIN(1500,5)在 MS Excel 中输入,它将62,860,358,437,800按原样返回。但是,如果我尝试手动计算它,即使在 Excel 中,#NUM!当我尝试首先找到 1500 的阶乘时也会出错。手动公式为

1500!/5!(1500-5)!

我觉得奇怪的是 Excel 的 COMBIN 函数计算正确但手动方式返回错误。简而言之,我想知道PHP中是否有与此功能等效的功能?我已经尝试使用 gmp_fact 手动计算,并且与 Excel 一样,它返回错误 ( NaN)。

谢谢

4

1 回答 1

0

您的计算失败了,因为您很快就会溢出Integer数据类型,这在您的系统上可能只有 32 位。您可以使用任意精度数学函数来解决该问题:

http://www.php.net/manual/en/ref.gmp.php

如果gmp_fact(...)似乎返回错误或错误结果,则您可能传递给它一个错误值或假设它的结果是基本数字类型。gmp_strval当你完成计算时,你会想要使用类似的东西将返回的 GMP 资源转换为可读的东西。

例子:

$a = gmp_fact(1500);
$b = gmp_fact(5);
$c = gmp_fact(1500-5);
$result = gmp_div($a,(gmp_mul($b,$c)));
echo gmp_strval($result);
于 2013-07-25T21:42:52.363 回答