pow()
Aprenda a função pow() no PHP, usada para elevar um número a uma potência, com exemplos e casos especiais.
A função pow() eleva um número a uma potência — ou seja, calcula base multiplicado por si mesmo exponent vezes. Esta página aborda sua sintaxe, o tipo de valor que retorna, como difere do operador **, e os casos especiais (expoentes negativos, fracionários e zero) que costumam confundir as pessoas.
Sintaxe
pow(int|float $base, int|float $exponent): int|float|object$base— o número a ser elevado.$exponent— a potência à qual a base será elevada.
A função retorna $base elevado à potência de $exponent. O tipo do resultado depende das entradas: se ambos os argumentos forem inteiros não negativos e o resultado couber em um inteiro, um int é retornado; caso contrário, um float é retornado.
Exemplo básico
Aqui elevamos 2 à potência de 3, armazenamos o resultado e o exibimos. Como ambos os argumentos são inteiros não negativos, pow() retorna o inteiro 8.
pow() vs. o operador **
Desde o PHP 5.6, o operador de exponenciação ** faz exatamente a mesma coisa que pow() e é geralmente preferido por ser mais legível:
<?php
echo pow(2, 10); // 1024
echo "\n";
echo 2 ** 10; // 1024
?>Ambos produzem 1024. O operador ** é associativo à direita, portanto 2 ** 3 ** 2 é avaliado como 2 ** (3 ** 2), que é 512 — não 64. Veja operadores PHP para mais informações sobre precedência de operadores.
Expoentes negativos, fracionários e zero
pow() não se limita a expoentes inteiros positivos.
<?php
echo pow(2, -2); // 0.25 -> 1 / (2 * 2)
echo "\n";
echo pow(16, 0.5); // 4 -> the square root of 16
echo "\n";
echo pow(5, 0); // 1 -> any number to the power 0 is 1
echo "\n";
echo pow(-2, 3); // -8 -> a negative base with an integer exponent
?>Comportamentos principais:
- Um expoente negativo retorna o recíproco, portanto o resultado é um
float. - Um expoente fracionário calcula uma raiz: elevar a
0.5equivale à raiz quadrada,1/3à raiz cúbica. Para raízes quadradas especificamente,sqrt()é mais claro. - Qualquer base elevada à potência 0 é
1. - Uma base negativa elevada a um expoente não inteiro não tem resultado real;
pow()retornaNAN(Não É Um Número) nesse caso.
Armadilhas
- Resultados grandes transbordam para float.
pow(2, 63)ultrapassaPHP_INT_MAXem um sistema de 64 bits, então o resultado silenciosamente se torna um float e perde precisão. Use sabendo que o tipo do resultado pode mudar. NANpara raízes impossíveis.pow(-8, 1/3)retornaNANem vez de-2, porque o PHP avalia como uma potência de número real.- Strings são convertidas.
pow("2", "3")funciona e retorna8, mas depender da conversão de strings é frágil — passe números.
Funções relacionadas
sqrt()— raiz quadrada, equivalente apow($n, 0.5).abs()— valor absoluto, útil antes de calcular uma potência fracionária de um número possivelmente negativo.intdiv()— divisão inteira.- Funções matemáticas do PHP — visão geral do conjunto de ferramentas numéricas do PHP.
Conclusão
pow() (ou o operador equivalente **) eleva um número a uma potência e é um recurso fundamental em qualquer código PHP matemático. Lembre-se de que o tipo de retorno pode mudar de int para float dependendo dos argumentos, que bases negativas com expoentes fracionários resultam em NAN, e que resultados muito grandes transbordam para floats.