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
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.5equivale alla radice quadrata,1/3alla 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()restituisceNAN(Not A Number).
Attenzione a questi casi
- Risultati grandi traboccano in float.
pow(2, 63)superaPHP_INT_MAXsu 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. NANper radici impossibili.pow(-8, 1/3)restituisceNANanziché-2, perché PHP lo valuta come potenza nel campo dei numeri reali.- Le stringhe vengono convertite.
pow("2", "3")funziona e restituisce8, ma fare affidamento sulla conversione implicita di stringhe è rischioso — meglio passare numeri.
Funzioni correlate
sqrt()— radice quadrata, equivalente apow($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.