bcpow
(PHP 4, PHP 5, PHP 7, PHP 8)
bcpow — 任意精度数値をべき乗する
パラメータ
num
-
基数を表す文字列。
exponent
-
指数を表す文字列。 指数が整数でない場合、値は切り捨てられます。 正しい指数の範囲はプラットフォーム依存ですが、 少なくとも
-2147483648
から2147483647
までの範囲を持ちます。 scale
-
This parameter is used to set the number of digits after the decimal place in the result.
If
null
, it will default to the default scale set with bcscale(), or fallback to the value of thebcmath.scale
INI directive.
戻り値
結果を文字列で返します。
エラー / 例外
This function throws a ValueError in the following cases:
num
orexponent
is not a well-formed BCMath numeric stringexponent
has a fractional partexponent
orscale
is outside the valid range
This function throws a DivisionByZeroError exception if num
is 0
and exponent
is a negative value.
変更履歴
バージョン | 説明 |
---|---|
8.4.0 |
Negative powers of 0 previously returned 0, but now throw a DivisionByZeroError
exception.
|
8.0.0 |
When exponent has a fractional part, it now throws a ValueError
instead of truncating.
|
7.3.0 | bcpow() 関数は、指定されたスケールで値を返すようになりました。 これより前のバージョンでは、後に続く0の桁が省略された数値が返される可能性がありました。 |
例
例1 bcpow() の例
<?php
echo bcpow('4.2', '3', 2); // 74.08
?>
注意
注意:
PHP 7.3.0 より前のバージョンでは、 bcmul() は
scale
引数で指定したものより少ない桁数を返す可能性がありました。 これはscale
で許された精度が不要な場合にだけ起きていました。 たとえば、以下のような場合です:例2 bcpow() で scale を指定する例
<?php
echo bcpow('5', '2', 2); // 結果は "25.00" ではなく "25" となります
?>
+add a note
User Contributed Notes 3 notes
Michael Bailey (jinxidoru at byu dot net) ¶
20 years ago
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
thomas at tgohome dot com ¶
15 years ago
<?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));
}
?>
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google