如何将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的数字的任何小数位(即,它们始终是整数),因此,在特殊情况下,如此大的数字只能返回自己。

10-07 15:23