f64::min în Rust

min returnează cel mai mic dintre două numere, max cel mai mare; dacă unul este NaN, îl ignoră.

Sintaxă
fn min(self, other: f64) -> f64
fn max(self, other: f64) -> f64

Ce face f64::min

a.min(b) și a.max(b) compară două valori f64. Dacă una dintre ele este NaN, se returnează cealaltă, deci un NaN izolat nu strică rezultatul.

Pentru o listă întreagă, iter().min() nu merge pe f64 (lipsește Ord). Se folosește fold: v.iter().copied().fold(f64::INFINITY, f64::min). Alternativ, iter().max_by(|a, b| a.total_cmp(b)).

Parametri

Parametru Descriere
other Al doilea număr.

Ce returnează

f64.

Exemple

Exemplul 1: Minim și maxim, inclusiv cu NaN

fn main() {
    println!("{}", 3.5_f64.min(2.1));
    println!("{}", 3.5_f64.max(2.1));
    println!("{}", f64::NAN.min(4.0));
    println!("{}", 4.0_f64.max(f64::NAN));
}

Rezultat

2.1
3.5
4
4

Exemplul 2: Temperatura minimă și maximă a săptămânii

fn main() {
    let temperaturi: [f64; 5] = [12.5, 9.0, 15.25, 7.75, 11.0];

    let minima = temperaturi.iter().copied().fold(f64::INFINITY, f64::min);
    let maxima = temperaturi.iter().copied().fold(f64::NEG_INFINITY, f64::max);
    println!("minimă: {minima}, maximă: {maxima}");

    let cea_mai_calda = temperaturi.iter().enumerate().max_by(|a, b| a.1.total_cmp(b.1));
    println!("cea mai caldă zi: {:?}", cea_mai_calda);

    let mut sortate = temperaturi;
    sortate.sort_by(f64::total_cmp);
    println!("sortate: {sortate:?}");
}

Rezultat

minimă: 7.75, maximă: 15.25
cea mai caldă zi: Some((2, 15.25))
sortate: [7.75, 9.0, 11.0, 12.5, 15.25]

Greșeli frecvente

  • Scrii temperaturi.iter().max(): eroarea the trait bound `f64: Ord` is not satisfied. Folosește fold sau max_by cu total_cmp.
  • Pornești fold pentru maxim de la 0.0: dacă toate valorile sunt negative, rezultatul greșit este 0. Pornește de la f64::NEG_INFINITY.

Comenzi înrudite

  • f64::clamp: Limitează valoarea la un interval: sub min devine min, peste max devine max, altfel rămâne neschimbată.
  • 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.
  • f64: Tipul implicit pentru numere cu zecimale: virgulă mobilă pe 64 de biți (precizie dublă, IEEE 754).