如何在 Rust 中向上或向下舍入一个数字?

Gir*_*rpa 7 rounding rust

如何设置地板或天花板号码?我试图使用round板条箱,但要么不起作用,要么我用错了。

use round::round_down;

fn main() {
  println!("{}", round_down(5.5f64, 0));  
}
Run Code Online (Sandbox Code Playgroud)

这会打印5.5但应该打印5

我的Cargo.toml文件包含这个:

[dependencies]
round = "0.1.0"
Run Code Online (Sandbox Code Playgroud)

Dor*_*taş 6

如评论中所述,您可以使用:floorceil

fn main() {
    let num_32 = 3.14159_f32;

    println!("{}", num_32.floor()); // Output: 3
    println!("{}", num_32.ceil()); // Output: 4


    let num_64 = 3.14159_f64;

    println!("{}", num_64.floor()); // Output: 3
    println!("{}", num_64.ceil()); // Output: 4
}
Run Code Online (Sandbox Code Playgroud)

  • 依赖项名称为 libmath,版本为 0.2.1。 (2认同)
  • 我不明白,为什么这个箱子存在。[地板](https://doc.rust-lang.org/std/primitive.f32.html#method.floor) 和 [ceil](https://doc.rust-lang.org/std/primitive.f32 .html#method.ceil) 已由语言提供。 (2认同)
  • f64 当然可以使用完全相同的功能 (2认同)

Ger*_*lov 5

如果你只有整数,你可以使用这个技巧:

// down
a / b

// up
a / b + (a % b).signum()
Run Code Online (Sandbox Code Playgroud)

例子:

let a: i32 = 5;
let b: i32 = 2;

// down
println!("floor = {}" , a / b);

// up
println!("ceil = {}" , a / b + (a % b).signum());
Run Code Online (Sandbox Code Playgroud)

操场