pow()
Die Funktion pow() in PHP potenziert eine Zahl. Erfahren Sie mehr zu Syntax, Rückgabetyp und Sonderfällen.
Die Funktion pow() potenziert eine Zahl — das heißt, sie berechnet base multipliziert mit sich selbst exponent-mal. Diese Seite behandelt die Syntax, den Rückgabetyp, den Unterschied zum **-Operator sowie Sonderfälle mit negativen, gebrochenen und null Exponenten, die leicht zu Verwirrung führen können.
Syntax
pow(int|float $base, int|float $exponent): int|float|object$base— die zu potenzierende Zahl.$exponent— die Potenz, auf die die Basis erhoben wird.
Die Funktion gibt $base hoch $exponent zurück. Der Ergebnistyp hängt von den Eingaben ab: Wenn beide Argumente nicht-negative ganze Zahlen sind und das Ergebnis in eine Ganzzahl passt, wird ein int zurückgegeben; andernfalls ein float.
Einfaches Beispiel
Hier wird 2 auf die Potenz 3 erhoben, das Ergebnis gespeichert und ausgegeben. Da beide Argumente nicht-negative ganze Zahlen sind, gibt pow() die Ganzzahl 8 zurück.
pow() vs. der Operator **
Seit PHP 5.6 macht der Potenzierungsoperator ** genau dasselbe wie pow() und wird in der Regel bevorzugt, da er natürlicher zu lesen ist:
<?php
echo pow(2, 10); // 1024
echo "\n";
echo 2 ** 10; // 1024
?>Beide liefern 1024. Der **-Operator ist rechtsassoziativ, daher wird 2 ** 3 ** 2 als 2 ** (3 ** 2) ausgewertet, was 512 ergibt — nicht 64. Weitere Informationen zur Operatorrangfolge finden Sie unter PHP-Operatoren.
Negative, gebrochene und null Exponenten
pow() ist nicht auf positive ganzzahlige Exponenten beschränkt.
<?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
?>Wichtige Verhaltensweisen:
- Ein negativer Exponent gibt den Kehrwert zurück, das Ergebnis ist also ein
float. - Ein gebrochener Exponent berechnet eine Wurzel: Erheben auf
0.5entspricht der Quadratwurzel,1/3der Kubikwurzel. Speziell für Quadratwurzeln istsqrt()klarer. - Jede Basis hoch 0 ergibt
1. - Eine negative Basis mit einem nicht-ganzzahligen Exponenten hat kein reelles Ergebnis;
pow()gibt in diesem FallNAN(Not A Number) zurück.
Tücken
- Große Ergebnisse überlaufen zu float.
pow(2, 63)überschreitetPHP_INT_MAXauf einem 64-Bit-System, sodass das Ergebnis stillschweigend zu einem float wird und an Präzision verliert. Verwenden Sie die Funktion im Wissen, dass sich der Ergebnistyp ändern kann. NANbei unmöglichen Wurzeln.pow(-8, 1/3)gibtNANstatt-2zurück, da PHP dies als reelle Potenz auswertet.- Strings werden konvertiert.
pow("2", "3")funktioniert und gibt8zurück, aber das Verlassen auf String-Konvertierung ist fehleranfällig — übergeben Sie Zahlen.
Verwandte Funktionen
sqrt()— Quadratwurzel, entsprichtpow($n, 0.5).abs()— absoluter Wert, nützlich vor der Berechnung einer gebrochenen Potenz einer möglicherweise negativen Zahl.intdiv()— ganzzahlige Division.- PHP-Math-Funktionen — Überblick über PHPs numerisches Werkzeugset.
Fazit
pow() (oder der äquivalente **-Operator) potenziert eine Zahl und ist ein Grundbaustein jedes mathematischen PHP-Codes. Beachten Sie, dass sich der Rückgabetyp je nach Argumenten von int zu float verschieben kann, dass negative Basen mit gebrochenen Exponenten NAN liefern und dass sehr große Ergebnisse zu floats überlaufen.