bcpow

任意精度数値をべき乗する

説明

string bcpow(string $num, string $exponent, intnull $scale = null)

numexponent 乗を求めます。

パラメータ

num

基数を表す文字列。

exponent

指数を表す文字列。 指数が整数でない場合、値は切り捨てられます。 正しい指数の範囲はプラットフォーム依存ですが、 少なくとも -2147483648 から 2147483647 までの範囲を持ちます。

scale
結果の小数点以下の桁数を指定します。null の場合は、 bcscale 関数でグローバルに 設定した桁数をデフォルトとして使用します。 それも設定されていない場合は bcmath.scale INI ディレクティブの値を使用します。

戻り値

結果を文字列で返します。

エラー / 例外

この関数は、以下の場合に ValueError をスローします:

  • num もしくは exponent が、BCMath で有効でない数値形式の文字列である場合
  • exponent が整数値でない場合
  • exponent もしくは scale が範囲外の値である場合

この関数は、num の値が 0 かつ exponent が負の値である場合、 DivisionByZeroError 例外をスローします。

変更履歴

バージョン 説明
8.4.0 0 の負のべき乗を行った場合、0 を返す代わりに DivisionByZeroError がスローされるようになりました。
8.0.0 exponent が小数部を持つ場合、ValueError がスローされるようになりました。 以前は、小数部を切り捨てて整数として計算を行っていました。
7.3.0 bcpow 関数は、指定されたスケールで値を返すようになりました。 これより前のバージョンでは、後に続く0の桁が省略された数値が返される可能性がありました。

例1 bcpow の例

<?php

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

?>

注意

注意:

PHP 7.3.0 より前のバージョンでは、 bcmulscale 引数で指定したものより少ない桁数を返す可能性がありました。 これは scale で許された精度が不要な場合にだけ起きていました。 たとえば、以下のような場合です:

例2 bcpow で scale を指定する例

<?php
echo bcpow('5', '2', 2);     // 結果は "25.00" ではなく "25" となります
?>

参考

  • bcpowmod
  • bcsqrt
  • BcMath\Number::pow