功率大浮点数(100.33 ^ 360)

时间:2015-05-08 05:31:47

标签: php gmp pow

我有问题:

<div class="allTemplateName">
  <li data-table="#table1">A</li>
  <li data-table="#table2">B</li>
  <li data-table="#table3">C</li>
</div>

<div class="container">
  <table id="table1">
    <tr>
      <td>Table 1</td>
    </tr>
  </table>
  <table id="table2">
    <tr>
      <td>Table 2</td>
    </tr>
  </table>
  <table id="table3">
    <tr>
      <td>Table 3</td>
    </tr>
  </table>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

我使用GMP,但这不是浮点数:

pow(100.33, 360); // return INF

请帮忙:)怎么做?

2 个答案:

答案 0 :(得分:2)

@paxdiablo是对的。 gmp_pow不允许浮点值。你会收到警告

  

警告:gmp_pow():无法将变量转换为GMP - 命令行代码中的类型错误

您可以使用bcpow实现此目的 http://php.net/manual/en/function.bcpow.php

答案 1 :(得分:1)

来自PHP GMP documentation page

  

这些函数允许您使用GNU MP库处理任意长度的 INTEGERS

换句话说,不允许浮点数。 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