pow()
Découvrez la fonction pow() en PHP, utilisée pour élever un nombre à une puissance donnée, avec sa syntaxe et ses cas particuliers.
La fonction pow() élève un nombre à une puissance — c'est-à-dire qu'elle calcule base multiplié par lui-même exponent fois. Cette page couvre sa syntaxe, le type de valeur qu'elle retourne, en quoi elle diffère de l'opérateur **, ainsi que les cas particuliers (exposants négatifs, fractionnaires et zéro) qui peuvent surprendre.
Syntaxe
pow(int|float $base, int|float $exponent): int|float|object$base— le nombre à élever.$exponent— la puissance à laquelle élever la base.
La fonction retourne $base élevé à la puissance $exponent. Le type du résultat dépend des entrées : si les deux arguments sont des entiers non négatifs et que le résultat tient dans un entier, un int est retourné ; sinon, un float est retourné.
Exemple de base
Ici, nous élevons 2 à la puissance 3, stockons le résultat et l'affichons. Comme les deux arguments sont des entiers non négatifs, pow() retourne l'entier 8.
pow() vs. l'opérateur **
Depuis PHP 5.6, l'opérateur d'exponentiation ** fait exactement la même chose que pow() et est généralement préféré car il se lit plus naturellement :
<?php
echo pow(2, 10); // 1024
echo "\n";
echo 2 ** 10; // 1024
?>Les deux produisent 1024. L'opérateur ** est associatif à droite, donc 2 ** 3 ** 2 est évalué comme 2 ** (3 ** 2), ce qui donne 512 — et non 64. Voir les opérateurs PHP pour en savoir plus sur la précédence des opérateurs.
Exposants négatifs, fractionnaires et zéro
pow() n'est pas limitée aux exposants entiers positifs.
<?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
?>Comportements clés :
- Un exposant négatif retourne l'inverse, donc le résultat est un
float. - Un exposant fractionnaire calcule une racine : élever à
0.5correspond à la racine carrée,1/3à la racine cubique. Pour les racines carrées en particulier,sqrt()est plus explicite. - Toute base élevée à la puissance 0 vaut
1. - Une base négative élevée à un exposant non entier n'a pas de résultat réel ;
pow()retourneNAN(Not A Number) dans ce cas.
Pièges courants
- Les grands résultats débordent vers float.
pow(2, 63)dépassePHP_INT_MAXsur un système 64 bits, donc le résultat devient silencieusement un float et perd en précision. Utilisez-le en sachant que le type du résultat peut changer. NANpour les racines impossibles.pow(-8, 1/3)retourneNANplutôt que-2, car PHP l'évalue comme une puissance dans les réels.- Les chaînes sont converties.
pow("2", "3")fonctionne et retourne8, mais se fier à la conversion implicite des chaînes est fragile — passez des nombres.
Fonctions associées
sqrt()— racine carrée, équivalente àpow($n, 0.5).abs()— valeur absolue, utile avant de calculer une puissance fractionnaire d'un nombre potentiellement négatif.intdiv()— division entière.- Les fonctions mathématiques PHP — aperçu de la boîte à outils numérique de PHP.
Conclusion
pow() (ou l'opérateur équivalent **) élève un nombre à une puissance et est un outil incontournable dans tout code PHP mathématique. N'oubliez pas que le type de retour peut passer de int à float selon les arguments, que les bases négatives avec des exposants fractionnaires donnent NAN, et que les très grands résultats débordent vers des floats.