Rust 编程小技巧摘选(8)

简介: Rust 编程小技巧摘选(8)

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"。

目录
相关文章
|
1月前
|
大数据 Python
使用Python查找字符串中包含的多个元素
本文介绍了Python中查找字符串子串的方法,从基础的`in`关键字到使用循环和条件判断处理多个子串,再到利用正则表达式`re模块`进行复杂模式匹配。文中通过实例展示了如何提取用户信息字符串中的用户名、邮箱和电话号码,并提出了优化策略,如预编译正则表达式和使用生成器处理大数据。
21 1
|
1月前
|
索引 Python
在Python中,如何快速地遍历列表中的每个元素?
在Python中,如何快速地遍历列表中的每个元素?
31 3
|
25天前
|
人工智能 机器人 测试技术
【python】python求解矩阵的转置(详细讲解)
【python】python求解矩阵的转置(详细讲解)
|
3天前
|
Rust 安全 测试技术
Rust并发编程实践:快速入门系统级编程
Rust是一门现代的系统编程语言,它的设计目标是提供安全性、并发性和高性能。Rust的出现是为了解决其他编程语言在这些方面存在的一些问题和挑战。
|
1月前
|
Python
Numpy(Numerical Python)是一个用于处理大型多维数组和矩阵的Python库
【2月更文挑战第28天】Numpy(Numerical Python)是一个用于处理大型多维数组和矩阵的Python库
21 1
|
1月前
|
机器学习/深度学习 图形学 Python
Python矩阵加法
Python矩阵加法
|
1月前
|
Python
利用Python处理列表中的重复元素的多种方法
利用Python处理列表中的重复元素的多种方法
50 0
|
1月前
|
Python
Python中检查一个字符串是否为回文
Python中检查一个字符串是否为回文
55 0
|
1月前
|
Python
在Python中,如何使用列表推导式来遍历列表中的每个元素?
在Python中,如何使用列表推导式来遍历列表中的每个元素?
26 2
|
1月前
|
API Python
【python自动化】Playwright基础教程(四)事件操作①高亮&元素匹配器&鼠标悬停
【python自动化】Playwright基础教程(四)事件操作①高亮&元素匹配器&鼠标悬停
23 0