W3docs

pow()

La funzione pow() in PHP eleva un numero a una potenza. Scopri sintassi, valori restituiti e casi limite.

La funzione pow() eleva un numero a una potenza, ovvero calcola base moltiplicato per se stesso esponente volte. Questa pagina ne illustra la sintassi, il tipo di valore restituito, le differenze rispetto all'operatore ** e i casi limite (esponenti negativi, frazionari e zero) che spesso creano confusione.

Sintassi

pow(int|float $base, int|float $exponent): int|float|object
  • $base — il numero da elevare.
  • $exponent — la potenza a cui elevare la base.

La funzione restituisce $base elevato alla potenza di $exponent. Il tipo del risultato dipende dagli argomenti: se entrambi sono interi non negativi e il risultato rientra in un intero, viene restituito un int; altrimenti viene restituito un float.

Esempio base

php— editable, runs on the server

Qui eleviamo 2 alla potenza di 3, memorizziamo il risultato e lo stampiamo. Poiché entrambi gli argomenti sono interi non negativi, pow() restituisce l'intero 8.

pow() vs. l'operatore **

A partire da PHP 5.6, l'operatore di esponenziazione ** fa esattamente la stessa cosa di pow() ed è solitamente preferito perché risulta più leggibile:

<?php
echo pow(2, 10);  // 1024
echo "\n";
echo 2 ** 10;     // 1024
?>

Entrambi producono 1024. L'operatore ** è associativo a destra, quindi 2 ** 3 ** 2 viene valutato come 2 ** (3 ** 2), che equivale a 512 — non 64. Consulta gli operatori PHP per maggiori informazioni sulla precedenza degli operatori.

Esponenti negativi, frazionari e zero

pow() non è limitata agli esponenti interi positivi.

<?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
?>

Comportamenti principali:

  • Un esponente negativo restituisce il reciproco, quindi il risultato è un float.
  • Un esponente frazionario calcola una radice: elevare a 0.5 equivale alla radice quadrata, 1/3 alla radice cubica. Per le radici quadrate in particolare, sqrt() è più chiara.
  • Qualsiasi base elevata alla potenza 0 è 1.
  • Una base negativa elevata a un esponente non intero non ha un risultato reale; in quel caso pow() restituisce NAN (Not A Number).

Attenzione a questi casi

  • Risultati grandi traboccano in float. pow(2, 63) supera PHP_INT_MAX su un sistema a 64 bit, quindi il risultato diventa silenziosamente un float e perde precisione. Occorre tenerne conto, poiché il tipo del risultato può cambiare.
  • NAN per radici impossibili. pow(-8, 1/3) restituisce NAN anziché -2, perché PHP lo valuta come potenza nel campo dei numeri reali.
  • Le stringhe vengono convertite. pow("2", "3") funziona e restituisce 8, ma fare affidamento sulla conversione implicita di stringhe è rischioso — meglio passare numeri.

Funzioni correlate

  • sqrt() — radice quadrata, equivalente a pow($n, 0.5).
  • abs() — valore assoluto, utile prima di calcolare una potenza frazionaria di un numero potenzialmente negativo.
  • intdiv() — divisione intera.
  • Funzioni matematiche PHP — panoramica del toolkit numerico di PHP.

Conclusione

pow() (o l'equivalente operatore **) eleva un numero a una potenza ed è uno strumento fondamentale in qualsiasi codice PHP matematico. Ricorda che il tipo restituito può passare da int a float a seconda degli argomenti, che le basi negative con esponenti frazionari producono NAN e che risultati molto grandi traboccano in float.

Esercizio

Pratica
Qual è la funzionalità della funzione 'pow' in PHP?
Qual è la funzionalità della funzione 'pow' in PHP?
Was this page helpful?