目录
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博客