当前位置: 首页 > wzjs >正文

企业网站制作收费网络营销课程个人总结3000字

企业网站制作收费,网络营销课程个人总结3000字,网站的流程,WordPress图片分享插件Rust 学习笔记&#xff1a;比较数值 Rust 学习笔记&#xff1a;比较数值整数类型浮点类型NAN Rust 学习笔记&#xff1a;比较数值 整数类型 在 Rust 中&#xff0c;可以用以下运算符比较数值&#xff1a; >、<、、!、>、< 但是&#xff0c; Rust 不允许比较不同…

Rust 学习笔记:比较数值

  • Rust 学习笔记:比较数值
    • 整数类型
    • 浮点类型
    • NAN

Rust 学习笔记:比较数值

整数类型

在 Rust 中,可以用以下运算符比较数值:

>、<、==、!=、>=、<=

但是, Rust 不允许比较不同类型的值。

解决方法 1:使用 as 进行类型转换

fn main() {let a: i32 = 10;let b: u16 = 100;if a < (b as i32) {println!("{a} is less than {}", b);}
}

从范围小的类型转换成范围大的类型是安全的,比如 u16 -> i32。

但要注意从范围大的类型转换成范围小的类型,编译不会报错,但结果可能不对。

解决方法 2:使用 try_into() 进行类型转换

try_into() 方法:

  • 导入 std::convert::TryInto trait。
  • 该方法返回 Result 类型。
use std::convert::TryInto;fn main() {let a: i32 = 10;let b: u16 = 100;let b = b.try_into().unwrap();if a < b {println!("{a} is less than {}", b);}
}

浮点类型

Rust 中的浮点类型(如 f32、f64)是基于二进制实现的,但我们通常用十进制来计算数值。

浮点类型的某些值不能很好地结合在一起。例如 f32、f64 只实现了 std::cmp::PartialEq,而其他数值类型还实现了 std::cmp::Eq。

针对浮点类型的指导方针:

  • 避免测试浮点类型的相等性
  • 如果结果在数学上是未定义的,这时候要小心

示例 1:

fn main() {assert!(0.1 + 0.2 == 0.3);
}

该程序执行会出错:

在这里插入图片描述

浮点数的底层表示使得 0.1 + 0.2 和 0.3 存在极其细微的差别。

示例 2:

fn main() {let abc: (f32, f32, f32) = (0.1, 0.2, 0.3);let xyz: (f64, f64, f64) = (0.1, 0.2, 0.3);println!("abc (f32)");println!("   0.1 + 0.2: {:x}", (abc.0 + abc.1).to_bits());println!("         0.3: {:x}", (abc.2).to_bits());println!();println!("xyz (f64)");println!("   0.1 + 0.2: {:x}", (xyz.0 + xyz.1).to_bits());println!("         0.3: {:x}", (xyz.2).to_bits());println!();assert!(abc.0 + abc.1 == abc.2);assert!(xyz.0 + xyz.1 == xyz.2);
}

程序在最后的 assert! 还是出错了:

在这里插入图片描述

在 f64 类型中,我们看到 0.1 + 0.2 为 3fd3333333333334,而 0.3 为 3fd3333333333333,它们并不是完全相等。

那么,我们怎么比较浮点类型呢?

一般来说,测试数学运算是否在其真实数学结果的可接受范围内更安全。这个边界通常被称为 ε。

Rust 提供了一些可容忍的误差值:f32::EPSILON 和 f64::EPSILON。

示例 3:

fn main() {let result: f32 = 0.1 + 0.2;let desired: f32 = 0.3;let abs_diff = (desired - result).abs();assert!(abs_diff <= f32::EPSILON);
}

程序正常执行。

示例 4:

fn main() {let result: f64 = 0.1 + 0.2;let desired: f64 = 0.3;println!("{}", desired - result);let abs_diff = (desired - result).abs();assert!(abs_diff <= f64::EPSILON);
}

程序正常执行。输出:-0.00000000000000005551115123125783。可以看出误差很小,且小于 f64::EPSILON。

Rust 编译器实际上将比较的工作交给了 CPU,浮点运算是使用芯片内的定制硬件实现的。

NAN

NAN 表示“不是一个数”,例如负数的平方根就是 NAN。

NAN 会影响其它数值:

  • 几乎所有与 NAN 交互的操作都返回 NAN
  • NAN 值永远不相等

相关方法:

  • is_nan():判断一个数是不是 NAN
  • is_finite():判断一个数是不是有限的

示例:

fn main() {let x: f32 = 1.0 / 0.0;assert!(x.is_finite());
}

程序出错:

在这里插入图片描述

http://www.dtcms.com/wzjs/83745.html

相关文章:

  • 信息网查询seo外包 靠谱
  • wordpress 完整主题下载地址外贸网站谷歌seo
  • 虹口做网站公司怎样注册一个自己的平台
  • 新乡百度关键词优化外包西安seo外包行者seo
  • 深圳市住房城乡建设委门户网站国内推广平台有哪些
  • netbeans做网站百度网盘登录入口网页版
  • 瑜伽网站设计厦门人才网官网招聘
  • 福州市建设工程工料机信息网站今日发生的重大新闻
  • 网站建设方为客户提供使用说明书产品推广计划书怎么写
  • 做电影网站哪个系统好seo技术培训课程
  • 网站是怎样赚钱的seo优化排名
  • 帮做论文网站吗北京seo公司
  • 企业门户网站建设市场今天的新闻摘抄
  • wordpress手机端插件贵阳seo网站推广
  • 郑州汉狮专业做网站公司互联网推广平台有哪些
  • 做网站要注册第35类商标吗自媒体营销模式有哪些
  • 建材采购网seo先上排名后收费
  • 电脑网站和手机网站怎么做相同路径关键词工具网站
  • 国外logo设计网站推荐百度url提交
  • 做变态手术视频网站百度竞价什么意思
  • 网站下的源代码和自己做的区别怎么投放广告
  • 做企业网站织梦和wordpress哪个好百度代理合作平台
  • 台州做企业网站深圳网络推广代理
  • 汉中做网站的电话澳门seo推广
  • 网站404怎么做视频教程网站推广的主要方法
  • 成都市住房和城乡建设局官方网站深圳高端网站建设公司
  • 余姚做网站62752762互联网营销师证书怎么考
  • 网站换域名有没有影响吗广州网络营销公司
  • 开关网站建设网站优化课程培训
  • 建设部网站最新消息电商运营的基本流程