(PHP 8 >= 8.4.0)
BcMath\Number::pow — Eleva um número de precisão arbitrária
Eleva $this à potência exponent
.
exponent
exponent
é específico por plataforma,
mas é pelo menos de -2147483648
a 2147483647
.
scale
scale
especifica explicitamente a escala para os resultados de cálculo.
Se scale
for null
, o resultado do cálculo será definido automaticamente.
Retorna o resultado da potenciação como um novo objeto BcMath\Number.
Quando a BcMath\Number::scale do objeto resultante é definida automaticamente,
dependendo do valor de exponent
, a BcMath\Number::scale
do resultado será o seguinte:
exponent |
BcMath\Number::scale do resultado |
---|---|
positivo | (BcMath\Number::scale da base) * (valor do exponent ) |
0 |
0 |
negativo | Entre (BcMath\Number::scale da base) e (BcMath\Number::scale
da base + 10 ) |
Se uma divisão indivisível ocorrer devido a um exponent
negativo, a
BcMath\Number::scale do resultado é expandida. A expansão é feita conforme necessidade, até
um máximo de +10
.
Este comportamento é o mesmo de BcMath\Number::div(), portanto consulte esse método para detalhes.
Este método lança uma exceção ValueError nos casos a seguir:
exponent
é uma string e não é uma string numérica BCMath bem formadaexponent
tem uma parte fracionáriaexponent
ou scale
está fora do intervalo válido
Este método lança uma exceção DivisionByZeroError se o valor de $this
for 0
e o exponent
for um valor negativo.
Exemplo #1 Exemplo de BcMath\Number::pow() quando scale
não é especificado
<?php
$number = new BcMath\Number('3.0');
$ret1 = $number->pow(new BcMath\Number('5'));
$ret2 = $number->pow('-1');
$ret3 = $number->pow(0);
var_dump($number, $ret1, $ret2, $ret3);
?>
O exemplo acima produzirá:
object(BcMath\Number)#1 (2) { ["value"]=> string(3) "3.0" ["scale"]=> int(1) } object(BcMath\Number)#3 (2) { ["value"]=> string(9) "243.00000" ["scale"]=> int(5) } object(BcMath\Number)#2 (2) { ["value"]=> string(13) "0.33333333333" ["scale"]=> int(11) } object(BcMath\Number)#4 (2) { ["value"]=> string(1) "1" ["scale"]=> int(0) }
Exemplo #2 Exemplo de BcMath\Number::pow() especificando scale
explicitamente
<?php
$number = new BcMath\Number('3.0');
$ret1 = $number->pow(new BcMath\Number('5'), 0);
$ret2 = $number->pow('-1', 2);
$ret3 = $number->pow(0, 10);
var_dump($number, $ret1, $ret2, $ret3);
?>
O exemplo acima produzirá:
object(BcMath\Number)#1 (2) { ["value"]=> string(3) "3.0" ["scale"]=> int(1) } object(BcMath\Number)#3 (2) { ["value"]=> string(3) "243" ["scale"]=> int(0) } object(BcMath\Number)#2 (2) { ["value"]=> string(4) "0.33" ["scale"]=> int(2) } object(BcMath\Number)#4 (2) { ["value"]=> string(12) "1.0000000000" ["scale"]=> int(10) }