W3docs

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

php— editable, runs on the server

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.5 entspricht der Quadratwurzel, 1/3 der Kubikwurzel. Speziell für Quadratwurzeln ist sqrt() klarer.
  • Jede Basis hoch 0 ergibt 1.
  • Eine negative Basis mit einem nicht-ganzzahligen Exponenten hat kein reelles Ergebnis; pow() gibt in diesem Fall NAN (Not A Number) zurück.

Tücken

  • Große Ergebnisse überlaufen zu float. pow(2, 63) überschreitet PHP_INT_MAX auf 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.
  • NAN bei unmöglichen Wurzeln. pow(-8, 1/3) gibt NAN statt -2 zurück, da PHP dies als reelle Potenz auswertet.
  • Strings werden konvertiert. pow("2", "3") funktioniert und gibt 8 zurück, aber das Verlassen auf String-Konvertierung ist fehleranfällig — übergeben Sie Zahlen.

Verwandte Funktionen

  • sqrt() — Quadratwurzel, entspricht pow($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.

Übung

Übung
Was ist die Funktionalität der 'pow'-Funktion in PHP?
Was ist die Funktionalität der 'pow'-Funktion in PHP?
Was this page helpful?