pow()
Aprende a usar la función pow() en PHP para elevar un número a una potencia, con ejemplos de exponentes negativos, fraccionarios y cero.
La función pow() eleva un número a una potencia, es decir, calcula base multiplicado por sí mismo exponent veces. Esta página cubre su sintaxis, el tipo de valor que devuelve, cómo se diferencia del operador **, y los casos extremos (exponentes negativos, fraccionarios y cero) que suelen confundir.
Sintaxis
pow(int|float $base, int|float $exponent): int|float|object$base— el número que se va a elevar.$exponent— la potencia a la que se eleva la base.
La función devuelve $base elevado a la potencia de $exponent. El tipo del resultado depende de las entradas: si ambos argumentos son enteros no negativos y el resultado cabe en un entero, se devuelve un int; en caso contrario, se devuelve un float.
Ejemplo básico
Aquí elevamos 2 a la potencia de 3, almacenamos el resultado y lo imprimimos. Dado que ambos argumentos son enteros no negativos, pow() devuelve el entero 8.
pow() vs. el operador **
Desde PHP 5.6, el operador de exponenciación ** hace exactamente lo mismo que pow() y suele preferirse porque se lee de forma más natural:
<?php
echo pow(2, 10); // 1024
echo "\n";
echo 2 ** 10; // 1024
?>Ambos producen 1024. El operador ** es asociativo por la derecha, por lo que 2 ** 3 ** 2 se evalúa como 2 ** (3 ** 2), que es 512, no 64. Consulta operadores de PHP para más información sobre la precedencia de operadores.
Exponentes negativos, fraccionarios y cero
pow() no se limita a exponentes enteros 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
?>Comportamientos clave:
- Un exponente negativo devuelve el recíproco, por lo que el resultado es un
float. - Un exponente fraccionario calcula una raíz: elevar a
0.5equivale a la raíz cuadrada, y a1/3a la raíz cúbica. Para raíces cuadradas específicamente,sqrt()es más claro. - Cualquier base elevada a la potencia 0 es
1. - Una base negativa elevada a un exponente no entero no tiene resultado real;
pow()devuelveNAN(Not A Number) en ese caso.
Advertencias
- Los resultados grandes se desbordan a float.
pow(2, 63)superaPHP_INT_MAXen un sistema de 64 bits, por lo que el resultado se convierte silenciosamente en float y pierde precisión. Úsalo sabiendo que el tipo del resultado puede cambiar. NANpara raíces imposibles.pow(-8, 1/3)devuelveNANen lugar de-2, porque PHP lo evalúa como una potencia de número real.- Las cadenas se convierten automáticamente.
pow("2", "3")funciona y devuelve8, pero depender de la conversión de cadenas es frágil — pasa números.
Funciones relacionadas
sqrt()— raíz cuadrada, equivalente apow($n, 0.5).abs()— valor absoluto, útil antes de calcular una potencia fraccionaria de un número posiblemente negativo.intdiv()— división entera.- Funciones matemáticas de PHP — descripción general del kit numérico de PHP.
Conclusión
pow() (o el operador equivalente **) eleva un número a una potencia y es un elemento fundamental en cualquier código PHP matemático. Recuerda que el tipo de retorno puede cambiar de int a float según los argumentos, que las bases negativas con exponentes fraccionarios producen NAN, y que los resultados muy grandes se desbordan a floats.