Ce face std::pow
std::pow(b, e) calculează be. Exponentul negativ înseamnă inversul (pow(2, -1) = 0.5), iar exponentul fracționar înseamnă rădăcină (pow(8, 1.0/3) = 2).
Rezultatul este întotdeauna cu virgulă, chiar dacă dai întregi. Pentru puteri întregi mici (pătrat, cub) este mai simplu și mai exact x * x. C++ nu are operator de ridicare la putere: ^ este SAU exclusiv pe biți.
Parametri
| Parametru | Descriere |
|---|---|
baza |
Numărul ridicat la putere. |
exponent |
Puterea. |
Ce returnează
Rezultatul, ca double.
Exemple
Exemplul 1: Puteri diverse
#include <cmath>
#include <print>
int main() {
std::println("2^10 = {}", std::pow(2, 10));
std::println("2^-2 = {}", std::pow(2, -2));
std::println("9^0.5 = {}", std::pow(9, 0.5));
int baza = 2;
int exponent = 3;
std::println("baza ^ exponent (XOR) = {}", baza ^ exponent);
}
Rezultat
2^10 = 1024
2^-2 = 0.25
9^0.5 = 3
baza ^ exponent (XOR) = 1
Exemplul 2: Dobândă compusă
1000 de lei la 5% pe an, timp de 10 ani: 1000 · 1.0510.
#include <cmath>
#include <print>
int main() {
double suma = 1000.0;
double dobanda = 0.05;
for (int ani : {1, 5, 10}) {
std::println("După {:>2} ani: {:.2f} lei", ani, suma * std::pow(1 + dobanda, ani));
}
}
Rezultat
După 1 ani: 1050.00 lei
După 5 ani: 1276.28 lei
După 10 ani: 1628.89 lei
Greșeli frecvente
- Scrii
2^3așteptând 8: rezultatul este 1 (SAU exclusiv pe biți). Clang avertizează pentru constante (-Wxor-used-as-pow), dar nu și pentru variabile, ca în exemplul de mai sus. - Pui rezultatul într-un
intpentru valori mari:powpoate returna 999.9999… și conversia taie la 999. Rotunjește custd::lroundsau calculează cu întregi. - Ridici un număr negativ la o putere cu zecimale (
pow(-8, 1.0/3)): rezultatul este NaN. Pentru rădăcina cubică foloseștestd::cbrt.