PHP - GMP и числа с плавающей запятой? - PullRequest
7 голосов
/ 05 августа 2011

Следующий код выводит 0, что не правильно:

$r = gmp_pow(gmp_init('-1.7976931348623157'), 308);
echo gmp_strval($r);

У меня сложилось впечатление, что библиотека GMP способна обрабатывать числа с плавающей запятой, или я допустил ошибку в коде?

1 Ответ

10 голосов
/ 05 августа 2011

Библиотека GMP была способна обрабатывать числа с плавающей запятой,

Это не так.Вы можете проверить это с помощью:

echo gmp_strval(gmp_init('18')); // 18
echo gmp_strval(gmp_init('1.8')); // 0

Теперь, что вы могли бы сделать, это использовать BCMath вместо:

$num = bcpow('-1.7976931348623157', '308');
echo $num;
echo floatval($num); // for a "prettier" format
...