Rust 编程小技巧摘选(8)

eb88291a18a94ba4ace118fb4e46ef23.png

目录

Rust 编程小技巧(8)

1. 取整函数 floor()

2. 取整函数ceil()

3. 取整函数  round()

4. 保留小数位数

5. 字符串转整数

unwrap()

unwrap_or()


Rust 编程小技巧(8)

1. 取整函数 floor()

floor函数对浮点数进行向下取整

示例代码:

fn main() {
    let x: f32 = 3.23;
    let s = x.floor();
    println!("{}", s);
}

 输出:

3

2. 取整函数ceil()

ceil函数对浮点数进行向上取整

示例代码:

fn main() {
    let x: f32 = 3.23;
    let s = x.ceil();
    println!("{}", s);
}

 输出:

4

3. 取整函数  round()

round函数对浮点数进行四舍五入取整

示例代码:

fn main() {
    let x: f32 = 3.23;
    let s = x.round();
    println!("{}", s);

    let x: f32 = 3.63;
    let s = x.round();
    println!("{}", s);
}

 输出:

3
4

4. 保留小数位数

使用以上三个取整函数达成目标:

fn main() {
    let mut x: f32 = 3.1415926;
    let s = format!("{:.4}", x);
    println!("{}\n", s);

    let s = (x * 10000.0).round() / 10000.0;
    println!("{}", s);
    let s = (x * 10000.0).ceil() / 10000.0;
    println!("{}", s);
    let s = (x * 10000.0).floor() / 10000.0;
    println!("{}\n", s);

    x = 3.1415333;
    let s = (x * 10000.0).round() / 10000.0;
    println!("{}", s);
    let s = (x * 10000.0).ceil() / 10000.0;
    println!("{}", s);
    let s = (x * 10000.0).floor() / 10000.0;
    println!("{}", s);
}

5. 字符串转整数

unwrap()

用于从 Result 对象中获取 Ok 值。如果 Result 对象是 Err,则会直接调用 panic! 来引发一个运行时错误。

示例代码:

fn main() {
    let s = "123";
    let i = s.parse::<i32>().unwrap();
    println!("{:?}", i);
 
    let s = "12x3";
    let i = s.parse::<i32>();
    println!("{:?}", i);
}

输出:

123
Err(ParseIntError { kind: InvalidDigit })

unwrap_or()

用于从 Result 对象中获取值,如果 Result 对象是 Err,则返回一个默认值。

示例代码:

fn main() {
    let s = "123";
    let i: i32 = s.parse().unwrap_or(0);
    println!("{:?}", i);

    let s = "12x3";
    let i = s.parse().unwrap_or(0);
    println!("{:?}", i);
}

输出:

123
0

匹配模式: let ... match

fn main() {
    let s = "123";
    let i = match s.parse::<i32>() {
        Ok(i) => i,
        Err(_e) => -1,
    };
    println!("{:?}", i);
 
    let s = "12x3";
    let i = match s.parse::<i32>() {
        Ok(i) => i,
        Err(_e) => -1,
    };
    println!("{:?}", i);
}

输出:

123
-1 

附:match语法

是一种模式匹配工具,用于根据值的特征进行多分支比较。它的基本语法如下:

match value {  
    pattern1 => result1,  
    pattern2 => result2,  
    ...  
    _ => resultN,  
}
这里的value是要被匹配的值,可以与各个模式进行比较。如果value符合某个模式,则执行对应的result。如果所有模式都不符合,最后的那个_ => resultN会被执行。

模式可以是任何可能被匹配的值或模式。例如,可以使用变量来捕获模式中的值,或者使用范围模式来匹配特定的值。

let number = 3;  
match number {  
    1 => println!("Number is 1"),  
    2 => println!("Number is 2"),  
    3 => println!("Number is 3"),  
    _ => println!("Number is not 1, 2, or 3"),  
}
在这个例子中,number的值是3,因此它与第三个模式匹配,并打印出"Number is 3"。

另外,还可以使用范围模式,例如:

let number = 5;  
match number {  
    1..=5 => println!("Number is between 1 and 5"),  
    _ => println!("Number is not between 1 and 5"),  
}
在这个例子中,number的值是5,因此它与第一个模式匹配,并打印出"Number is between 1 and 5"。


相关阅读:

Rust 编程小技巧摘选(1)_Hann Yang的博客-CSDN博客

Rust 编程小技巧摘选(2)_Hann Yang的博客-CSDN博客

Rust 编程小技巧摘选(3)_Hann Yang的博客-CSDN博客

Rust 编程小技巧摘选(4)_Hann Yang的博客-CSDN博客

Rust 编程小技巧摘选(5)_Hann Yang的博客-CSDN博客

Rust 编程小技巧摘选(6)_Hann Yang的博客-CSDN博客

Rust 编程小技巧摘选(7)_Hann Yang的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/boysoft2002/article/details/132239955