Ce face f64::round
round() rotunjește la cel mai apropiat întreg; la jumătate (.5) se îndepărtează de zero: 2.5 → 3, -2.5 → -3. round_ties_even() rotunjește jumătățile la numărul par (2.5 → 2), metoda folosită în statistică și contabilitate.
floor() dă cel mai mare întreg mai mic sau egal (în jos, spre minus infinit), ceil() cel mai mic întreg mai mare sau egal (în sus), iar trunc() tăie zecimalele (spre zero). Diferențele apar la numerele negative: (-2.7).floor() == -3, dar (-2.7).trunc() == -2.
Toate returnează tot f64. Pentru un întreg, convertește după: x.round() as i64. Pentru rotunjire la zecimale, înmulțește, rotunjește și împarte ((x * 100.0).round() / 100.0) sau folosește doar formatarea {:.2} la afișare.
Ce returnează
f64.
Exemple
Exemplul 1: Tabel de rotunjiri
fn main() {
println!("{:>6} {:>6} {:>6} {:>6} {:>6} {:>6}", "x", "round", "floor", "ceil", "trunc", "even");
for x in [2.4_f64, 2.5, 2.7, 3.5, -2.5, -2.7] {
println!(
"{x:>6} {:>6} {:>6} {:>6} {:>6} {:>6}",
x.round(),
x.floor(),
x.ceil(),
x.trunc(),
x.round_ties_even()
);
}
}
Rezultat
x round floor ceil trunc even
2.4 2 2 3 2 2
2.5 3 2 3 2 2
2.7 3 2 3 2 3
3.5 4 3 4 3 4
-2.5 -3 -3 -2 -2 -2
-2.7 -3 -3 -2 -2 -3
Exemplul 2: Calcule practice
Câte autobuze trebuie (în sus), câte cutii pline (în jos) și prețul rotunjit la bani.
fn main() {
let elevi = 130.0_f64;
println!("autobuze de 50 de locuri: {}", (elevi / 50.0).ceil());
println!("cutii pline de 12 ouă din 100: {}", (100.0_f64 / 12.0).floor());
let pret = 19.99_f64 * 1.19;
println!("preț cu TVA: {pret}");
println!("rotunjit la bani: {}", (pret * 100.0).round() / 100.0);
println!("doar la afișare: {pret:.2}");
println!("note: {} {}", 9.5_f64.round() as i32, 4.49_f64.round() as i32);
}
Rezultat
autobuze de 50 de locuri: 3
cutii pline de 12 ouă din 100: 8
preț cu TVA: 23.788099999999996
rotunjit la bani: 23.79
doar la afișare: 23.79
note: 10 4
Greșeli frecvente
- Folosești
trunc()sauas i32când voiai rotunjire:2.9 as i32 == 2. - Te aștepți ca
round()să rotunjească jumătățile la par, ca în unele limbaje: Rust îndepărtează de zero. Pentru par, foloseșteround_ties_even(). - Rotunjești la 2 zecimale și apoi afișezi cu
{}: unele valori nu au reprezentare exactă. Pentru afișare,{:.2}este mai sigur.
Comenzi înrudite
f64: Tipul implicit pentru numere cu zecimale: virgulă mobilă pe 64 de biți (precizie dublă, IEEE 754).f64::abs: Valoarea absolută a unui număr zecimal: elimină semnul minus.f64::clamp: Limitează valoarea la un interval: sub min devine min, peste max devine max, altfel rămâne neschimbată.