How does one round a f64 floating point number in Rust to a specified number of digits?
相关问题
- Share Arc between closures
- Function references: expected bound lifetime param
- Pattern matching on slices
- How can I iteratively call Sha256::digest, passing
- Destructure a vector into variables and give away
相关文章
- How can I convert a f64 to f32 and get the closest
- What is a good way of cleaning up after a unit tes
- How can I unpack (destructure) elements from a vec
- How to import macros in Rust?
- How to get struct field names in Rust? [duplicate]
- Confusion between [T] and &[T]
- How do I initialize an opaque C struct when using
- What's the most idiomatic way to test two Opti
If you want this just for display purposes, use the formatting syntax built into
println!()
. For example, to print a number rounded to 2 decimal places use the{:.2}
format specifier:If you want to put the rounded number in a string, use the
format!()
macro.If you want to round a number and get the result back as another number, then multiply the number by the given power of 10, call
round
, and divide by the same power, e.g. to round to 2 decimal places, use 102 = 100.playground
This prints
12.34567 12.35000
.If the number of decimal places isn't known at compile time, one could use
powi
to efficiently compute the relevant power.Note that this will breakdown for very large numbers; specifically, numbers larger than
std::f64::MAX / power
(wherepower
is the power of ten, e.g. 100 in the example above) will become infinity in the multiplication, and remain infinity after. However,f64
cannot represent any fractional places for numbers larger than 253 (i.e. they're always integers), so one can special case such large numbers to just return themselves.