如何将Rust中的f64浮点数四舍五入为指定的位数?
最佳答案
如果仅出于显示目的,请使用formatting syntax built into println!()
。例如,要打印舍入到小数点后两位的数字,请使用{:.2}
格式说明符:
fn main() {
let x = 12.34567;
println!("{:.2}", x);
}
如果要将舍入的数字放在字符串中,请使用
format!()
macro。如果您想舍入一个数字并将结果作为另一个数字取回,请将该数字乘以给定的10的幂,调用
round
并除以相同的幂,例如要舍入到小数点后两位,请使用102 = 100。fn main() {
let x = 12.34567_f64;
let y = (x * 100.0).round() / 100.0;
println!("{:.5} {:.5}", x, y);
}
playground
这将打印
12.34567 12.35000
。如果在编译时未知小数位数,则可以使用
powi
有效地计算相关幂。请注意,这将分解为非常大的数字;具体来说,大于
std::f64::MAX / power
(其中power
是10的幂,例如在上面的示例中为100)的数字将在乘法中变为无穷大,并在之后保持无穷大。但是,f64
不能代表大于253的数字的任何小数位(即,它们始终是整数),因此,在特殊情况下,如此大的数字只能返回自己。