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.mzph.cn/news/32338.shtml

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

相关文章

[C++项目] Boost文档 站内搜索引擎(5): cpphttplib实现网络服务、html页面实现、服务器部署...

在前四篇文章中, 我们实现了从文档文件的清理 到 搜索的所有内容: 项目背景: &#x1fae6;[C项目] Boost文档 站内搜索引擎(1): 项目背景介绍、相关技术栈、相关概念介绍…文档解析、处理模块parser的实现: &#x1fae6;[C项目] Boost文档 站内搜索引擎(2): 文档文本解析模块…

0基础学习VR全景平台篇 第80篇:Insta360 影石如何直播推流

一、下载Insta360 Pro APP 1、手机进入Insta360官网Insta360 | Action Cameras | 360 Cameras | VR Cameras&#xff0c;页面往下滑动到Insta360 Pro2相机处&#xff0c;点击相机图片进入详情页。详情页继续下滑到到手机APP处&#xff0c;根据自己的手机系统选择对应的客户端进…

计算机网络(6) --- https协议

计算机网络&#xff08;5&#xff09; --- http协议_哈里沃克的博客-CSDN博客http协议https://blog.csdn.net/m0_63488627/article/details/132089130?spm1001.2014.3001.5501 目录 1.HTTPS的出现 1.HTTPS协议介绍 2.补充概念 1.加密 1.解释 2.原因 3.加密方式 对称加…

【Linux】网络基础1

文章目录 网络基础11. 计算机网络背景1.1 网络发展 2. 认识协议2.1 网络协议2.2 OSI七层模型2.3 TCP/IP五层&#xff08;或四层&#xff09;模型 3. 网络传输基本流程3. 1 数据报封装和分用 4. 网络中的地址管理4.1 认识IP地址 5. 认识MAC地址 网络基础1 1. 计算机网络背景 1…

Flink-串讲面试题

1. 概念 有状态的流式计算框架 可以处理源源不断的实时数据&#xff0c;数据以event为单位&#xff0c;就是一条数据。 2. 开发流程 先获取执行环境env&#xff0c;然后添加source数据源&#xff0c;转换成datastream&#xff0c;然后使用各种算子进行计算&#xff0c;使用s…

数据结构 | 树的定义及实现

目录 一、树的术语及定义 二、树的实现 2.1 列表之列表 2.2 节点与引用 一、树的术语及定义 节点&#xff1a; 节点是树的基础部分。它可以有自己的名字&#xff0c;我们称作“键”。节点也可以带有附加信息&#xff0c;我们称作“有效载荷”。有效载荷信息对于很多树算法…

【学习FreeRTOS】第5章——FreeRTOS任务挂起与恢复

1.任务的挂起与恢复的API函数 vTaskSuspend() ——挂起任务&#xff08;类似暂停&#xff0c;可恢复&#xff0c;但删除任务&#xff0c;无法恢复&#xff09;vTaskResume() ——恢复被挂起的任务xTaskResumeFromISR()—— 在中断中恢复被挂起的任务 1.1.任务挂起函数vTaskSu…

leetcode19. 删除链表的倒数第 N 个结点

题目&#xff1a;leetcode19. 删除链表的倒数第 N 个结点 描述&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 思路&#xff1a; 让前面的节点比后面的节点先走n1步&#xff0c;因为从链表的尾节点的下一个节点开始&…

【BASH】回顾与知识点梳理(二十二)

【BASH】回顾与知识点梳理 二十二 二十二. Linux 账号管理22.1 Linux 的账号与群组使用者标识符&#xff1a; UID 与 GID使用者账号/etc/passwd 文件结构/etc/shadow 文件结构 关于群组&#xff1a; 有效与初始群组、groups, newgrp/etc/group 文件结构有效群组(effective grou…

传值与传址问题

传值与传址实例 2023年上半年软考真题&#xff1a; 22、设函数foo和hoo的定义如下图所示&#xff0c;在函数foo中调用函数hoo&#xff0c;hoo的第一个参数采用传引用方式(call by reference)&#xff0c;第二个参数传值方式(call by value)&#xff0c;那么函数foo中的print(a…

go错误集(持续更新)

1.提示以下报错 Build Error: go build -o c:\Users\Administrator\Desktop__debug_bin2343731882.exe -gcflags all-N -l . go: go.mod file not found in current directory or any parent directory; see ‘go help modules’ (exit status 1) 解决办法&#xff1a; go …

Elasticsearch 与 OpenSearch:揭开性能差距

作者&#xff1a;George Kobar, Ugo Sangiorgi 对于任何依赖快速、准确搜索数据的组织来说&#xff0c;强大、快速且高效的搜索引擎是至关重要的元素。 对于开发人员和架构师来说&#xff0c;选择正确的搜索平台可以极大地影响你的组织提供快速且相关结果的能力。 在我们全面的…

opencv实战项目 实现手势跟踪并返回位置信息(封装调用)

OpenCV 是一个基于 Apache2.0 许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习软件库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上。 需要提前准备opencv 和 mediapipe库 pip --default-timeout5000 install -i https://pypi.tuna.tsi…

拂袖一挥,zipfile秒列zip包内容

使用wxpython列出文件夹中的zip文件及内容 最近在做一个文件管理的小工具,需要列出选择的文件夹下的所有zip压缩文件,并在点击某个zip文件时能够显示其中的内容。为此我使用了wxpython来实现这个功能。 1. 导入需要的模块 首先导入程序需要的模块: import wx import os imp…

设计模式之工厂模式

简单工厂 由一个工厂生产多个产品。 一般工厂 每个产品都有一个单独的工厂专门生产。 抽象工厂 不同工厂生产不同种类的产品&#xff0c;每个工厂生产的同类产品又可以再次分类。比如一个鼠标工厂和一个键盘工厂&#xff0c;他们可以为不同的品牌生产鼠标和键盘。

CTF流量题解http1.pcapng

使用Wireshark工具打开流量文件http1.pcapng&#xff0c;如下图所示。 在过滤检索栏输入http&#xff0c;wireshark自动进行过滤。 选中其中一条记录后&#xff0c;wireshark 下方显示若干信息。 Frame 81: 925 bytes on wire (7400 bits), 925 bytes captured (7400 bits) …

从数据仓库到数据结构:数据架构的演变之路

在上个世纪&#xff0c;从电子商务巨头到医疗服务机构和政府部门&#xff0c;数据已成为每家组织的生命线。有效地收集和管理这些数据可以为组织提供宝贵的洞察力&#xff0c;以帮助决策&#xff0c;然而这是一项艰巨的任务。 尽管数据很重要&#xff0c;但CIOinsight声称&…

DL_20无线串口模块

今日介绍一块最近入手的无线串口模块&#xff0c;40r左右&#xff0c;精简好用&#xff0c;虽然感觉配置波特率啥的并不智能化&#xff0c;但250米的通信距离还是很顶的&#xff01;它的升级版甚至有1000米的通信距离&#xff08;空旷地带&#xff09; 这篇文章不多讲其余话&am…

【C++】开源:abseil-cpp基础组件库配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍abseil-cpp基础组件库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#…

什么,你说你不会通过jdbc一次性创建10个数据库???

小朋友你是否有很多问号&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f; 1、在资源文件中建一个文件&#xff0c;填入连接数据库的基本信息。 2、通过反射拿到资源文件。…