f64::sqrt în Rust

Rădăcina pătrată a numărului; pentru numere negative rezultatul este NaN.

Sintaxă
fn sqrt(self) -> f64

Ce face f64::sqrt

x.sqrt() calculează rădăcina pătrată. Rezultatul este cel mai apropiat număr f64 de valoarea exactă. Pentru x negativ, rezultatul este NaN, nu o panică, așa că verifică intrarea dacă poate fi negativă.

Perechile utile: cbrt() pentru rădăcina cubică și hypot(y), care calculează sqrt(x² + y²) fără să depășească la numere foarte mari. Pentru întregi există isqrt.

Ce returnează

f64.

Exemple

Exemplul 1: Rădăcini pătrate

fn main() {
    for x in [16.0_f64, 2.0, 0.25, 0.0, -9.0] {
        println!("sqrt({x}) = {}", x.sqrt());
    }
    println!("cbrt(27) = {}", 27.0_f64.cbrt());
}

Rezultat

sqrt(16) = 4
sqrt(2) = 1.4142135623730951
sqrt(0.25) = 0.5
sqrt(0) = 0
sqrt(-9) = NaN
cbrt(27) = 3

Exemplul 2: Distanța dintre două puncte

Coordonate aproximative în kilometri pe o hartă plană. hypot dă același rezultat ca formula cu sqrt.

fn distanta(a: (f64, f64), b: (f64, f64)) -> f64 {
    let dx = b.0 - a.0;
    let dy = b.1 - a.1;
    (dx * dx + dy * dy).sqrt()
}

fn main() {
    let scoala = (2.0, 3.0);
    let casa = (5.0, 7.0);
    println!("distanța: {} km", distanta(scoala, casa));
    println!("cu hypot: {} km", (casa.0 - scoala.0).hypot(casa.1 - scoala.1));

    let aria_terenului = 1250.0_f64;
    println!("latura unui pătrat cu aria {aria_terenului} m²: {:.2} m", aria_terenului.sqrt());
}

Rezultat

distanța: 5 km
cu hypot: 5 km
latura unui pătrat cu aria 1250 m²: 35.36 m

Greșeli frecvente

  • Nu verifici dacă numărul este negativ și calculul continuă cu NaN, care „contaminează” toate rezultatele următoare.
  • Scrii sqrt(x) ca funcție: în Rust este metodă, x.sqrt() (sau f64::sqrt(x)).

Comenzi înrudite

  • i32::isqrt: Rădăcina pătrată întreagă: cel mai mare număr întreg al cărui pătrat nu depășește valoarea (17.isqrt() = 4).
  • f64::powi: powi ridică la o putere întreagă (poate fi negativă), powf la o putere cu zecimale.
  • f64::is_nan: Verifică dacă valoarea este NaN („nu e număr”), singurul mod sigur, pentru că NaN nu este egal nici cu el însuși.