Power большие числа с плавающей запятой (100,33 ^ 360)

У меня проблемы:

pow(100.33, 360); // return INF

Я использую GMP, но не получаю число с плавающей точкой:

gmp_strval(gmp_pow('2', 3)); //return 8
gmp_strval(gmp_pow('2.0', 3)); //return 0

Пожалуйста, помогите 🙂 Как это сделать?

0

Решение

От Страница документации PHP GMP:

Эти функции позволяют работать с произвольной длиной INTEGERS используя библиотеку GNU MP.

Другими словами, с плавающей запятой не допускается. Сам GMP может выполнять операции с плавающей запятой, но похоже, что интерфейс PHP к нему не использует всю свою мощь.

Ты можешь использовать bcpow чтобы получить эту функциональность с чем-то вроде:

$num = bcpow('100.33', '360', 20);
echo $num;

и это выводит:

3274103534834396431867559103093187830103180578316133866868
8735096209772372540787863291005903612118038812972585250990
9184783128175191070195558359762317865469719418788175465726
2260403727769361000933644502616255136475528818978181028888
7900899387124705985519483201689097535257257471686279645479
0293787644875616262913286836073610372960697383687245477891
3127091993585718764278131719726387787145646698001143323773
8827166195539744295014989026208988133960971242873367417385
5744373185506374857530249495974084141129611541831378797038
9257147348718093640732700784857982966810730374711336160716
5240002574688357771367833219551029582525497843733924244263
5089812833806492039068418216603999851813542524325083024650
6447037300606418104334363.93719644178064144117
1

Другие решения

@paxdiablo прав. gmp_pow не допускает значения с плавающей точкой. Вы получите предупреждение

Предупреждение: gmp_pow (): невозможно преобразовать переменную в GMP — неправильный тип в коде командной строки

Вы можете добиться этого с помощью bcpow
http://php.net/manual/en/function.bcpow.php

2

По вопросам рекламы [email protected]