Wie wird eine Gleitkommazahl auf eine bestimmte Anzahl von Stellen gerundet?

9

Wie rundet man eine f64 Gleitkommazahl in Rust auf eine bestimmte Anzahl von Stellen?

    
user1056805 22.02.2015, 06:55
quelle

1 Antwort

19

Wenn Sie dies nur für Anzeigezwecke möchten, verwenden Sie die Formatierungssyntax, die in println!() integriert ist . Um beispielsweise eine auf 2 Dezimalstellen gerundete Zahl zu drucken, verwenden Sie den Formatbezeichner {:.2} :

%Vor%

Wenn Sie die gerundete Zahl in eine Zeichenfolge einfügen möchten, verwenden Sie das Makro format!() .

Wenn Sie eine Zahl runden möchten 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 , und dividiere durch die gleiche Potenz, z Um auf 2 Dezimalstellen zu runden, verwenden Sie 10 2 = 100.

%Vor%

Spielplatz

Dies druckt 12.34567 12.35000 .

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

Beachten Sie, dass dies bei sehr großen Zahlen auftritt; insbesondere werden Zahlen, die größer als std::f64::MAX / power sind (wobei power die Potenz von zehn ist, beispielsweise 100 in dem obigen Beispiel), in der Multiplikation unendlich und bleiben danach unendlich. % Co_de% kann jedoch keine Bruchstellen für Zahlen darstellen, die größer als 2 53 sind (d. H. Sie sind immer ganze Zahlen). Daher kann man besonders große Zahlen einfach selbst zurückgeben.

    
huon 22.02.2015, 10:31
quelle

Tags und Links