Ce face f64::powi
x.powi(n) calculează x la puterea n, unde n este i32, deci poate fi și negativ: 2.0.powi(-1) == 0.5. De obicei este mai rapid decât powf, dar poate avea o eroare de rotunjire puțin mai mare.
x.powf(y) acceptă orice exponent f64: 8.0.powf(1.0 / 3.0) este rădăcina cubică, iar x.powf(0.5) este rădăcina pătrată. Pentru bază negativă și exponent cu zecimale, rezultatul este NaN.
Parametri
| Parametru | Descriere |
|---|---|
n |
Exponentul: i32 la powi, f64 la powf. |
Ce returnează
f64.
Exemple
Exemplul 1: Dobândă compusă
1000 de lei la 5% pe an, timp de n ani: 1000 * 1.05^n.
fn main() {
let suma = 1000.0_f64;
let dobanda = 0.05_f64;
for ani in [1, 5, 10, 20] {
let final_ = suma * (1.0 + dobanda).powi(ani);
println!("după {ani:2} ani: {final_:.2} lei");
}
println!("valoarea de azi a 1000 lei peste 10 ani: {:.2} lei", suma * (1.0 + dobanda).powi(-10));
}
Rezultat
după 1 ani: 1050.00 lei
după 5 ani: 1276.28 lei
după 10 ani: 1628.89 lei
după 20 ani: 2653.30 lei
valoarea de azi a 1000 lei peste 10 ani: 613.91 lei
Exemplul 2: Exponenți cu zecimale
fn main() {
println!("2^10 = {}", 2.0_f64.powi(10));
println!("2^0.5 = {}", 2.0_f64.powf(0.5));
println!("8^(1/3) = {}", 8.0_f64.powf(1.0 / 3.0));
println!("27^(1/3) = {}", 27.0_f64.powf(1.0 / 3.0));
println!("(-8)^(1/3) = {}", (-8.0_f64).powf(1.0 / 3.0));
println!("cbrt(-8) = {}", (-8.0_f64).cbrt());
}
Rezultat
2^10 = 1024
2^0.5 = 1.4142135623730951
8^(1/3) = 2
27^(1/3) = 3
(-8)^(1/3) = NaN
cbrt(-8) = -2
Greșeli frecvente
- Aștepți un rezultat exact de la
powf(1.0 / 3.0):1/3nu se poate reprezenta exact, deci rezultatul poate avea erori mici. Pentru rădăcina cubică foloseștecbrt(). - Calculezi rădăcina cubică a unui număr negativ cu
powf: rezultatul esteNaN;cbrtmerge.
Comenzi înrudite
i32::pow: Ridică numărul la o putere întreagă nenegativă: 2.pow(10) = 1024.f64::sqrt: Rădăcina pătrată a numărului; pentru numere negative rezultatul este NaN.f64::mul_add: Calculează (x * a) + b cu o singură rotunjire la final (fused multiply-add), deci mai precis.