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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/67294.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视觉学习(七)---Flask 框架下接口调用及python requests 实现json字符串传输

在项目实施过程中需要与其他系统进行接口联调&#xff0c;将图像检测的结果传递给其他系统接口&#xff0c;进行逻辑调用。这中间的过程可以通过requests库进行实现。 1.安装requests库 pip install requests2.postman 接口测试 我们先通过postman 了解下接口调用&#xff0…

页面跳转和两个页面之间的数据传递-鸿蒙ArkTS

页面跳转和两个页面之间的数据传递-ArkTS 页面跳转和两个页面之间的数据传递-ArkTS关于router的使用**跳转页面的实现方式。**页面接受跳转传递的参数页面返回及携带参数效果代码Index页面Second页面 参考资料 页面跳转和两个页面之间的数据传递-ArkTS 本篇文章主要是对两个页面…

我给 PostgreSQL 官方 JDBC 驱动修复了一个高并发性能问题

这是我在 2022 年给 PostgreSQL 官方 JDBC 驱动 修复的一个高并发性能问题。 该问题影响的版本范围是 pgjdbc&#xff1a; 42.3.242.3.3 Issue: Concurrent performance issue in 42.3.2 caused by #2291 https://github.com/pgjdbc/pgjdbc/issues/2450 PR: Use non-synchro…

微软杀入Web3:打造基于区块链的AI产品

作者&#xff1a;秦晋 2023年1月&#xff0c;微软向 ChatGPT 创建者 OpenAI 投资 100 亿美元&#xff0c;在AI业界引发格外关注。此举也让微软在AI的战略探索上提前取得有利位置。 2023年3月&#xff0c;微软软件工程师 Albacore 披露微软正在为Edge 浏览器测试内置的非托管加密…

深入理解索引B+树的基本原理

目录 1. 引言 2. 为什么要使用索引&#xff1f; 3. 索引的概述 4. 索引的优点是什么&#xff1f; 4.1 降低数据库的IO成本&#xff0c;提高数据查找效率 4.2 保证数据库每一行数据的唯一性 4.3 加速表与表之间的连接 4.4 减少查询中分组与排序的执行时间 5. 索引的缺点…

微信小程序实现左滑删除

一、效果 二、代码 实现思路使用的是官方提供的 movable-area&#xff1a;注意点&#xff0c;需要设置其高度&#xff0c;否则会出现列表内容重叠的现象。由于movable-view需要向右移动&#xff0c;左滑的时候给删除控件展示的空间&#xff0c;故 movable-area 需要左移 left:…

静态网页和动态网页区别

1&#xff0c;静态网页和动态网页有何区别 1) 更新和维护 静态网页内容一经发布到网站服务器上&#xff0c;无论是否有用户访问&#xff0c;这些网页内容都是保存在网站服务器上的。如果要修改网页的内容&#xff0c;就必须修改其源文件&#xff0c;然后重新上传到服务器上。…

【论文阅读】NoDoze:使用自动来源分类对抗威胁警报疲劳(NDSS-2019)

NODOZE: Combatting Threat Alert Fatigue with Automated Provenance Triage 伊利诺伊大学芝加哥分校 Hassan W U, Guo S, Li D, et al. Nodoze: Combatting threat alert fatigue with automated provenance triage[C]//network and distributed systems security symposium.…

单链表相关操作(插入,删除,查找)

通过上一节我们知道顺序表的优点&#xff1a; 可随机存储&#xff08;O(1)&#xff09;&#xff1a;查找速度快 存储密度高&#xff1a;每个结点只存放数据元素&#xff0c;而单链表除了存放数据元素之外&#xff0c;还需存储指向下一个节点的指针 http://t.csdn.cn/p7OQf …

基于ssm+vue的新能源汽车在线租赁管理系统源码和论文PPT

基于ssmvue的新能源汽车在线租赁管理系统源码和论文PPT010 开发环境&#xff1a; 开发工具&#xff1a;idea 数据库mysql5.7(mysql5.7最佳) 数据库链接工具&#xff1a;navcat,小海豚等 开发技术&#xff1a;java ssm tomcat8.5 摘 要 随着科学技术的飞速发展&#xff0…

完整版:TCP、UDP报文格式

目录 TCP报文格式 报文格式 报文示例 UDP报文格式 报文格式 报文示例 TCP报文格式 报文格式 图1 TCP首部格式 字段长度含义Source Port16比特源端口&#xff0c;标识哪个应用程序发送。Destination Port16比特目的端口&#xff0c;标识哪个应用程序接收。Sequence Numb…

如何在iPhone手机上修改手机定位和模拟导航?

如何在iPhone手机上修改手机定位和模拟导航&#xff1f; English 首先&#xff0c;你需要在Mac电脑上下载安装 Location Simulator/定位模拟工具 和 Runner 这两款应用程序。 完成安装后&#xff0c;打开软件&#xff0c;并用USB连接手机设备 修改iPhone手机定位和模拟导航 …