bcpow

(PHP 4, PHP 5, PHP 7, PHP 8)

bcpow将任意精度数字提高到另一个数字

说明

bcpow(string $num, string $exponent, ?int $scale = null): string

num 提高到 exponent 次方。

参数

num

基数,以字符串形式表示。

exponent

指数,以字符串形式表示。如果指数是非整数,则将其截断。指数的有效范围是平台特定的,但至少为 -21474836482147483647

scale

此可选参数用于设置结果中小数点后的位数。如果省略,它将默认设置为使用 bcscale() 函数全局设置的 scale,或者如果未设置则回退到 0

返回值

将结果作为字符串返回。

变更日志

版本 说明
7.3.0 bcpow() 现在返回具有请求的 scale 的数字。以前,返回的数字可能省略了尾随的小数零。

示例

示例 #1 bcpow() 示例

<?php

echo bcpow('4.2', '3', 2); // 74.08

?>

注释

注意:

在 PHP 7.3.0 之前,bcpow() 可能返回的结果中小数点后的位数少于 scale 参数指示的位数。这种情况仅发生在结果不需要 scale 允许的所有精度时。例如

示例 #2 bcpow() scale 示例

<?php
echo bcpow('5', '2', 2); // 打印 "25",而不是 "25.00"
?>

参见

  • bcpowmod() - 将任意精度数字提高到另一个数字,并通过指定的模数进行缩减
  • bcsqrt() - 获取任意精度数字的平方根

添加注释

用户贡献的注释 3 个注释

Michael Bailey (jinxidoru at byu dot net)
20 年前
bcpow() 仅支持小于或等于 2^31-1 的指数。此外,bcpow() 不支持小数。如果您将 scale 设置为 0,则指数将转换为整数;否则将生成错误。

--
Michael Bailey
http://www.jinxidoru.com
thomas at tgohome dot com
15 年前
<?php

bcscale
(100);

/*
* 使用级数计算自然对数。
* @author Thomas Oldbury.
* @license 公共领域。
*/
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);
}

/*
* 使用 baseN 对数计算以 2 为底的对数。
* @note 需要以上函数。
* @author Thomas Oldbury.
* @license 公共领域。
*/
function bclog2($a, $iter = 10)
{
return
bcdiv(bcln($a, $iter), bcln("2", $iter));
}

/*
* 使用 baseN 对数计算以 10 为底的对数。
* @note 需要以上函数。
* @author Thomas Oldbury.
* @license 公共领域。
*/
function bclog10($a, $iter = 10)
{
return
bcdiv(bcln($a, $iter), bcln("10", $iter));
}


?>
匿名
19 年前
好吧,如果 bcpow 有限制,那么这应该可以工作
<?php
function bcpow_($num, $power) {
$awnser = "1";
while (
$power) {
$awnser = bcmul($awnser, $num, 100);
$power = bcsub($power, "1");
}
return
rtrim($awnser, '0.');
}
?>
只是 $power 不能包含小数位。
To Top