2015-02-22 5 views

Antwort

18

Wenn Sie dies nur für Anzeigezwecke möchten, verwenden Sie die formatting syntax built into println!(). Um zum Beispiel eine Zahl gerundet auf 2 Dezimalstellen verwenden, um die {:.2} Formatbezeichner zu drucken:

fn main() { 
    let x = 12.34567; 
    println!("{:.2}", x); 
} 

Wenn Sie die gerundete Zahl in einen String setzen wollen, die format!() macro verwenden.

Wenn Sie eine Zahl runden und das Ergebnis als eine andere Zahl zurückgeben möchten, dann multiplizieren Sie die Zahl mit der angegebenen Potenz von 10, rufen Sie round auf und teilen Sie sie mit der gleichen Potenz, z. auf rund 2 Dezimalstellen, 10 verwenden = 100.

fn main() { 
    let x = 12.34567_f64; 
    let y = (x * 100.0).round()/100.0; 

    println!("{:.5} {:.5}", x, y); 
} 

playground

Dieser druckt 12.34567 12.35000.

Wenn die Anzahl der Dezimalstellen zur Kompilierzeit nicht bekannt ist, könnte powi verwendet werden, um die entsprechende Leistung effizient zu berechnen.

Beachten Sie, dass dies für sehr große Zahlen zusammenbrechen wird; insbesondere werden Zahlen größer als std::f64::MAX/power (wobei power die Zehnerpotenz ist, beispielsweise 100 im obigen Beispiel) in der Multiplikation unendlich und bleiben danach unendlich. f64 kann jedoch keine gebrochenen Stellen für Zahlen größer als 2 darstellen (d. H. Sie sind immer ganze Zahlen), so dass man Sonderfälle wie große Zahlen einfach selbst zurückgeben kann.

Verwandte Themen