没有 PHP 扩展的大数字(幂的幂...)
Big numbers (powers of powers ...) without PHP extensions
<?php
$res = pow(5, pow(5, pow(5, pow(5, 5))));
echo $res;
输出:
INF
我知道它不能存储在 64 位浮点数中,但是有没有办法计算这种大数?
我所有的尝试都失败了(总是这样"INF")。
编辑:是的,我知道这个数字很大,而这正是我要计算的。
另外,我正在尝试不使用扩展来实现(除非我完全理解扩展的作用并且我能够自己编写代码)。
你可以尝试使用http://pear.php.net/package/Math_BigInteger/docs
它可以通过 pear
安装
这两个会有所帮助
- BC 数学扩展
- GMP 库
编辑:
如评论中所述,GMP extension 可能有效,并且可能更适合整数数学。
另一位评论者建议提供比链接更多的信息。此答案和其他答案中提到的扩展比标准内置 php 函数更适合更大的整数或更精确的浮点数。
但是......您可能无法像在问题中那样将结果与 gmp_pow
链接在一起。一方面,您需要 php 5.6 才能使用 gmp 编号作为 gmp_pow.
的参数
另一方面,数字太大,您可能需要使用gmp_powm,如说明in this answer
原答案
您可以尝试 BCMath extension 尽管默认情况下可能不会安装它。 (尽管 BCMath 可能更适合处理浮点而不是整数)
<?php
$res = pow(5, pow(5, pow(5, pow(5, 5))));
echo $res;
输出:
INF
我知道它不能存储在 64 位浮点数中,但是有没有办法计算这种大数? 我所有的尝试都失败了(总是这样"INF")。
编辑:是的,我知道这个数字很大,而这正是我要计算的。 另外,我正在尝试不使用扩展来实现(除非我完全理解扩展的作用并且我能够自己编写代码)。
你可以尝试使用http://pear.php.net/package/Math_BigInteger/docs 它可以通过 pear
安装这两个会有所帮助 - BC 数学扩展 - GMP 库
编辑: 如评论中所述,GMP extension 可能有效,并且可能更适合整数数学。
另一位评论者建议提供比链接更多的信息。此答案和其他答案中提到的扩展比标准内置 php 函数更适合更大的整数或更精确的浮点数。
但是......您可能无法像在问题中那样将结果与 gmp_pow
链接在一起。一方面,您需要 php 5.6 才能使用 gmp 编号作为 gmp_pow.
另一方面,数字太大,您可能需要使用gmp_powm,如说明in this answer
原答案 您可以尝试 BCMath extension 尽管默认情况下可能不会安装它。 (尽管 BCMath 可能更适合处理浮点而不是整数)