Rust:
Avrunding av tall
Hvordan:
Rust gjør avrunding til en lek. Sjekk ut disse metodene for f32
eller f64
typer:
fn main() {
let num = 2.34567;
// Avrund til nærmeste hele tall
let round = num.round();
println!("Avrundet: {}", round); // Avrundet: 2
// Gulv - største heltall mindre enn eller lik tallet
let floor = num.floor();
println!("Gulv: {}", floor); // Gulv: 2
// Tak - minste heltall større enn eller lik tallet
let ceil = num.ceil();
println!("Tak: {}", ceil); // Tak: 3
// Trunker - heltallsdelen uten fraksjonssifre
let trunc = num.trunc();
println!("Trunkert: {}", trunc); // Trunkert: 2
// Til nærmeste multiplum av en tierpotens
let multiple_of_ten = (num * 100.0).round() / 100.0;
println!("Avrundet til 2 desimaler: {}", multiple_of_ten); // Avrundet til 2 desimaler: 2.35
}
Dykking Dypere
Historisk har avrunding vært avgjørende for å passe uendelige desimaler eller irrasjonelle tall i begrensede digitale rom - et must for gamle datamaskiner med knapp hukommelse. Tenk kuleramme, men mindre håndverksmessig, mer matte.
Alternativer til de innfødte Rust-metodene inkluderer:
format!
makro for tekstformatering som avrunder som standard.- Eksterne pakker for spesialiserte matteoppgaver, som
round
pakken med mer granulær kontroll.
Under hetten etterkommer Rusts avrundingsoperasjoner IEEE-standarder - teknisk sjargong for “det avrunder slik matematikklæreren din ønsker.” Pluss, på grunn av binære representasjoner, kan noen tall ikke avrundes tradisjonelt, som 0.1, på grunn av deres uendelige representasjon i binært.
Se også
- Rust dok på primitive typemetoder: https://doc.rust-lang.org/std/primitive.f64.html
- IEEE-standard for flyttallsaritmetikk (IEEE 754): https://ieeexplore.ieee.org/document/4610935
- “round” pakke for mer kompleks avrunding: https://crates.io/crates/round