PHP - GMP和浮点数?

Mat*_*tty 7 php gmp

以下代码输出0,这是不正确的:

$r = gmp_pow(gmp_init('-1.7976931348623157'), 308);
echo gmp_strval($r);
Run Code Online (Sandbox Code Playgroud)

我的印象是GMP库能够处理浮点数,或者我在代码中犯了错误?

Nul*_*ion 10

GMP库能够处理浮点数,

不是.您可以使用以下方法测试:

echo gmp_strval(gmp_init('18')); // 18
echo gmp_strval(gmp_init('1.8')); // 0
Run Code Online (Sandbox Code Playgroud)

现在,您可以做的是使用BCMath:

$num = bcpow('-1.7976931348623157', '308');
echo $num;
echo floatval($num); // for a "prettier" format
Run Code Online (Sandbox Code Playgroud)

  • 是的,你说得对。http://www.php.net/manual/en/intro.gmp.php 也这么说。我忽略了这一点,因为 PHP 扩展应该是 GMP 库的包装器。我想这是一个不完整的。 (2认同)