BcMath\Number::pow

(PHP 8 >= 8.4.0)

BcMath\Number::powEleva um número de precisão arbitrária

Descrição

public BcMath\Number::pow(BcMath\Number|string|int $exponent, ?int $scale = null): BcMath\Number

Eleva $this à potência exponent.

Parâmetros

exponent
O expoente. Precisa ser um valor sem parte fracionária. O intervalo válido de exponent é específico por plataforma, mas é pelo menos de -2147483648 a 2147483647.
scale
O parâmetro scale especifica explicitamente a escala para os resultados de cálculo. Se scale for null, o resultado do cálculo será definido automaticamente.

Valor Retornado

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.

Erros/Exceções

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 formada
  • exponent tem uma parte fracionária
  • exponent ou scale está fora do intervalo válido
  • BcMath\Number::scale do objeto resultante 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.

Exemplos

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)
}

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top