• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • bcpow()

    (PHP 4, PHP 5, PHP 7)

    任意精度数字的乘方

    说明

    bcpow(string $left_operand,string $right_operand[,int $scale]): string

    左操作数右操作数次方运算.

    参数

    $left_operand

    字符串类型的左操作数.

    $right_operand

    字符串类型的右操作数.

    $scale

    此可选参数用于设置结果中小数点后的小数位数。也可通过使用bcscale()来设置全局默认的小数位数,用于所有函数。

    返回值

    返回结果为字符串类型.

    范例

    bcpow()示例

    <?php
    echo bcpow('4.2', '3', 2); // 74.08
    ?>
    

    注释

    Note:

    bcpow() may return a result with fewer digits after the decimal point than the$scaleparameter would indicate. This only occurs when the result doesn't require all of the precision allowed by the$scale. For example:

    bcpow() scale example

    <?php echo bcpow('5', '2', 2); // prints "25", not "25.00" ?>

    参见

    • bcpowmod()Raise an arbitrary precision number to another, reduced by a specified modulus
    • bcsqrt()任意精度数字的二次方根
    Well, if bcpow has limits, then this should work:
    <?php
    function bcpow_($num, $power) {
      $awnser = "1";
      while ($power) {
        $awnser = bcmul($awnser, $num, 100);
        $power = bcsub($power, "1");
      }
      return rtrim($awnser, '0.');
    }
    ?>
    Just that $power cannot have decimal digits in it.
    bcpow() only supports exponents less than or equal to 2^31-1. Also, bcpow() does not support decimal numbers. If you have scale set to 0, then the exponent is converted to an interger; otherwise an error is generated.
    --
    Michael Bailey
    http://www.jinxidoru.com
    <?php
    bcscale(100);
    /*
     * Computes the natural logarithm using a series.
     * @author Thomas Oldbury.
     * @license Public domain.
     */
    function bcln($a, $iter = 10)
    {
      $result = "0.0";
      
      for($i = 0; $i < $iter; $i++)
      {
        $pow = (1 + (2 * $i));
        $mul = bcdiv("1.0", $pow);
        $fraction = bcmul($mul, bcpow(bcsub($a, "1.0") / bcadd($a, "1.0"), $pow));
        $result = bcadd($fraction, $result);
      }
      
      return bcmul("2.0", $result);
    }
    /*
     * Computes the base2 log using baseN log.
     * @note Requires above functions.
     * @author Thomas Oldbury.
     * @license Public domain.
     */
    function bclog2($a, $iter = 10)
    {
      return bcdiv(bcln($a, $iter), bcln("2", $iter));
    }
    /*
     * Computes the base10 log using baseN log.
     * @note Requires above functions.
     * @author Thomas Oldbury.
     * @license Public domain.
     */
    function bclog10($a, $iter = 10)
    {
      return bcdiv(bcln($a, $iter), bcln("10", $iter));
    }
    ?>
    

    上篇:bcmul()

    下篇:bcpowmod()