学习新时代编程语言Rust-4数字基本数据类型

      上一期我们介绍了常量、变量及常用的基本数据类型,在课程的最后我们编写了一个使用常量和变量的例子,大家在观看视频后一定要动手编写运行一下。编程语言就像一个兵器,好比是一把宝剑,无论你读多少武林秘籍看过多少剑术表演不去自己把剑拿起来去感觉下它的重量去舞动下你就永远不会成为一个用剑的高手。

       这一期我们继续介绍 rust 提供的基本数据类型。


       数据类型分为俩大类,一类是用来表示单个值的我们称为单量数据类型(Scalar Types)也有人称为标量数据类型。一类是表示有多条数据的我们称为复合类型也就是可以表示多条数据的类型(Compound Types)。在单量数据类型中又包含整数数据类型(Integer)、浮点数(Floating-point)数据类型、布尔(Boolean)数据类型和字符(Character)数据类型4种基本数据类型。按照是否可以包含小于零的数也就是负数又将整数数据类型分为有符号(Signed)整数类型和无符号(Unsigned)整数类型。这里的符号就是指的表示数据是正数还是负数的正负号。使用 u 前缀表示无符号, i 前缀表示有符号。按照用于存储数据所使用的位数又分为8位、 16 位、 32 位、 64 位、 128 位无符号和有符号整数类型。这里需要注意:

       这里说的位不是指的个、十、千、百、万这样的数据位而是比特位,一个比特位的值只能是 0 或 1 ,如果有 8 个比特位做排列组合也就会有 2 的 8 次方种不同的排列组合,也就是 256 种,所以 8 位的无符号整数类型只能表示从 0 到 255 的 256 个整数。如果是有符号类型还需要使用一个比特位来表示是正数还是负数,所以就只有 7 个比特位可以用来表示数字了,也就只能表示从负的 2 的 7 次方到正的 2 的 7 次方减 1 的整数了,也就是 -128 到正的 127 这 256 个整数。这里我们可以总结成规律:

        n 位的无符号整数类型能够表示的数据范围为从 0 到 2 的 n 次方减一, n 位的有符号整数类型能够表示的数据范围从负的 2 的 n 减 1 次方到正的 2 的 n 减 1 次方再减 1。

      根据这个公式我们就可以计算出 16 位、32 位、 64 位、 128 位所能表示的数据范围了。从 32 位开始所能表示的数字已经很大了,我们没必要把完整的数字记下来,可以只记下数量级,这里为什么需要大家注意不同整数类型可以表示的数据范围呢?

       因为如果你需要存储的数字超出了你选用的数据类型,程序很可能会报错或者会得不到预想的结果,比如我们声明一个 8 位的无符号整数类型的变量 i ,给它赋值为 256 ,由于 256 已经超过了 8 位的无符号整数所能表示的整数数据范围,这个时候如果程序没有报错,那 i 的值也会是 1 而不是 256。这是相当危险的。如果这是一个账户程序,人家本来有 255 块钱,又存进去一块反而就只有 1 块钱了。所以我们一定要注意选择合适长度的整数类型,尽量选择偏大点的,但也不能都用最大的 128 位,因为这样会浪费内存影响性能。

        整数数据类型里还有俩个比较特殊的一个是 usize 一个是 isize ,并没有明确具体的位数,这是因为这俩个类型具体位数跟程序运行的操作系统有关,如果操作系统是 32 位的那它们就等价于 u32 和 i32 ,如果操作系统是 64 位的那他们就等价于 u64 和 i64。

       在我们生活中遇到的数字未必都是整数,有时候也会遇到带小数的数字,比如你的考试成绩 99.5 分,这种带小数的数字在 Rust 中使用浮点数类型表示,这里的浮点可以理解为小数点方便记忆。在 Rust 中浮点数数据类型并不像整数数据类型需要区分有符号和无符号,都是有符号的所以也就不需要 u/i 前缀 。

      f32 能表示的数据范围为: -1.1755*10 的负 38 次方 到 3.4028×10 的 38 次方

      f64 能表示的数据范围为: -2.2250*10 的负 308 次方到 1.7977*10 的 308 次方

      可见 64 位的浮点数完全可以满足日常需要。

      学习了整数和浮点数我们就可以使用 Rust 做算术题了,比如我们需要计算 1024 乘以 0.8 等于多少?

      使用 vim 打开 main.rs 文件,按 i 键进入编辑模式,使用双斜杠注释掉上一期的代码,在我们的练习代码中可能会出现一些没有讲解的知识点,大家可以先按照课程照着写,我们在后面会做讲解。如果有问题也可以通过平台给我们留言,定义一个 u16 类型的变量 i 并赋值为 1024, 为什么不是 u8 类型的呢?

main.rs

       因为 u8 类型只能表示 0 到 255 的整数, 1024 已经超出了它所能表示的范围。

       再定义一个 f32 类型的变量 j 并赋值为 0.8;再定义一个 u16 类型的变量 m 其值为 i*j 也就是 1024 乘以 0.8 ,在数字运算中我们使用 * 号代表乘号。在 println 中输出变量 m, 编写好后输入 : wq 保存并退出 执行 cargo run 命令编译并运行当前程序。

       我们在控制台中就看到了 1024 乘以 0.8 的运算结果。

       同样的我们也可以计算出 1024 加 0.8,1024 除以 0.8 , 1024 减去 0.8 的结果

       快动手试下吧。如果在尝试过程中遇到问题,欢迎通过平台给我们留言!

       相关视频请访问

       Learning and earning go together. More you learn in the school of hard knocks, the more you earn.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容