Swift数字类型之间的转换

news/2024/4/19 0:46:28

Swift数字类型之间的转换Swift是一种安全的语言,对于类型的检查非常严格,不同类型之间不能随便转换。
一、整型之间的转换
在C和Objective-C等其他语言中,整型之间有两种转换方法:
从小范围数到大范围数转换是自动的;
从大范围数到小范围数需要强制类型转换,有可能造成数据精度的丢失。
而在Swift中这两种方法是行不通的,我们需要通过一些函数进行显式地转换,代码如下:

[html]  view plain copy
  1. let historyScore:UInt8 = 90  
  2.   
  3.   
  4. let englishScore:UInt16 = 130  
  5.   
  6.   
  7. let totalScore = historyScore + englishScore  //错误  ①  
  8.   
  9.   
  10. let totalScore = UInt16(historyScore) + englishScore   //正确 ②  
  11.   
  12.   
  13. let totalScore = historyScore + UInt8(englishScore)  //正确   ③  



上述代码声明和初始化了两个常量historyScore和englishScore,我们把它们相加赋值给totalScore。如果采用第①行代码实现相加,程序就会有编译错误,原因是historyScore是UInt8类型,而englishScore是UInt16类型,它们之间不能转换。
我们有两种转换方法。
一种是把UInt8的historyScore转换为UInt16类型。由于是从小范围数转换为大范围数,这种转换是安全的。代码第②行UInt16(historyScore)就是正确的转换方法。
另外一种是把UInt16的englishScore转换为UInt8类型。由于是从大范围数转换为小范围数,这种转换是不安全的,如果转换的数比较大会造成精度的丢失。代码第③行UInt8(englishScore)是正确的转换方法。由于本例中englishScore的值是130,这个转换是成功的,如果把这个数修改为1300,虽然程序编译没有问题,但是会在控制台中输出异常信息,这是运行期异常。
上述代码中,UInt16(historyScore)和UInt8(englishScore)事实上是构造器,能够创建并初始化另外一个类型。关于构造器的内容,我们会在第14章详细介绍。
二、整型与浮点型之间的转换
整型与浮点型之间的转换与整型之间的转换类似,因此我们将上一节的示例修改如下:

[html]  view plain copy
  1. let historyScore:Float = 90.6           ①  
  2.   
  3.   
  4. let englishScore:UInt16 = 130           ②  
  5.   
  6.   
  7. let totalScore = historyScore + englishScore  //错误          ③  
  8.   
  9.   
  10. let totalScore = historyScore + Float(englishScore)  //正确,安全    ④  
  11.   
  12.   
  13. let totalScore = UInt16(historyScore) + englishScore  //正确,小数被截掉    ⑤  



上述代码经过了一些修改,第①行代码historyScore变量类型是Float类型。第②行代码englishScore变量还是UInt16类型。其中第③行代码直接进行了计算,结果有编译错误。第④行代码是将UInt16类型的englishScore变量转换为Float类型,这种转换是最安全的。第⑤行代码是将Float类型的historyScore变量转换为UInt16类型,这种转换首先会导致小数被截掉,另外如果historyScore变量数很大,会导致运行期异常,这与整型之间的转换是类似的。

 

 

更多内容请关注国内第一本Swift图书 《Swift开发指南》
本书交流讨论网站: http://www.51work6.com/swift.php
欢迎加入Swift技术讨论群:362298485

 

欢迎关注智捷iOS课堂微信公共平台


http://www.ppmy.cn/news/204883.html

相关文章

mx150 宏碁swift3_大众化的轻薄本-宏碁蜂鸟Swift 3评测报告

Acer蜂鸟Swift轻薄笔记本家族系列中,按数字排列分别为swift1、Swift3、Swift5、Swift7,前段时间小编接触到了Swift5,性能配置方面主要定位为中高端了,今天小编要给大家带来一款面向大众的笔记本-Acer蜂鸟Swift3。 Acer蜂鸟Swift3是…

i5-8250U 宏碁swift3_【黑苹果】宏基Acer Swift 3(SF315-51-518S)+i5-8250U+macos 10.15 efi文件下载!...

电脑配置 型号:宏基Acer Swift 3(SF315-51-518S) CPU : 英特尔酷睿 i5-8250U (卡比莱克-R) 图形 : 英特尔 UHD 620 RAM : 8 GB DDR4 2133 MHz (不可更换) SSD : 256 GB 英特尔 600p 系列 (SSDPEKKW256G7) (M.2 2280 NV…

mx150 宏碁swift3_高色域更轻薄 宏碁蜂鸟Swift 3(SF313)评测

提起轻薄本,宏碁旗下的“蜂鸟”一直都是该领域最具代表性的标杆产品,它最早可以追溯到2011年的Ultrabook(超极本)时代。如今,蜂鸟也跟随英特尔的脚步升级到了第八代酷睿处理器平台,并在主流价位市场给了我们更多选择的可能。 今天…

acer蜂鸟swift1深度linux,最轻仅1.1kg Acer发布四款Swift蜂鸟笔电

最轻仅1.1kg Acer发布四款Swift蜂鸟笔电 2016年08月31日 22:28作者:白涛编辑:白涛文章出处:泡泡网原创 分享 Acer宏碁于2016柏林消费性电子展(IFA)发表全新蜂鸟Swift系列超轻薄本,推出Acer 蜂鸟Swift 1、蜂鸟Swift 3、蜂鸟Swift 5…

acer蜂鸟swift1深度linux,设计走心 Acer蜂鸟Swift 3笔记本全拆解

原标题:设计走心 Acer蜂鸟Swift 3笔记本全拆解 [ ] 本文展示的是宏碁(Acer)蜂鸟Swift 3笔记本,从外到内,全面了解。更近距离地看看AMD 锐龙7 2700U处理器,以及在模具设计方面,这款笔记本能带来哪些惊喜。 这款蜂鸟Swif…

Acer新蜂鸟Swift3笔记本U盘重装Win10系统教学分享

Acer新蜂鸟Swift3笔记本U盘重装Win10系统教学分享。Win10系统有的时候也会和电脑的一些驱动程序发现冲突,导致电脑出现蓝屏等问题。如果你发现自己的电脑常常出现蓝屏问题,那么就可以使用以下的方法来进行系统的重装,解决系统不兼容问题导致的…

Acer新蜂鸟Swift3电脑开机总是蓝屏错误怎么办?

Acer新蜂鸟Swift3电脑开机总是蓝屏错误怎么办?有用户使用的Acer新蜂鸟Swift3电脑一开机的时候,没过几秒电脑桌面就变成了蓝屏的了,通过强制重启之后依然会重复这个问题,那么这个问题要怎么去进行解决了,今天将你怎么重…

mx150 宏碁swift3_宏碁Swift 3评测:炫美轻薄还有MX150独显

外观上的炫美只是外观,Acer Swift 3在性能配置上又是怎样呢?第七代英特尔酷睿处理器是必不可少的,轻薄本独有的最新MX150独显也标配了,还有2G的显存,8GB内存以及英特尔256固态硬盘,还有齐全的接口,既能保证…

swift5的SnipKit框架使用

swift5的SnipKit框架使用 swfit的SnipKit跟OC的Masonry类似,都是给控件添加约束的 加入 pod ‘SnapKit’, ‘~> 5.0.1’。 最新版本5.0.1。网上其他写法都是过期的API写法,没有参考意义,或者报一大堆警告,令开发者很是头疼。 …

windows子系统kali配置

win—KeX 功能: Win-KeX 在 Windows Subsystem for Linux (WSL 2) 中为 Kali Linux 提供 GUI 桌面体验,具有以下功能: 窗口模式:在专用窗口中启动 Kali Linux 桌面 无缝模式:在Windows和Kali…

如何解决构建安防监控系统的技术难点?快解析来助力

在安防领域,大数据具有广阔的应用场景,能带来深度的价值。随着应用普及越来越广,安防监控系统被人们日益重视起来,科技含量越来越高,几乎所有高新科技都可促进其发展,尤其是信息时代的来临,更给该专业的发展提供了契机…

冈萨雷斯DIP第9章知识点

文章目录 9.1 预备知识9.2 腐蚀和膨胀9.3 开运算与闭运算9.5 一些基本的形态学算法9.8 灰度级形态学 9.1 预备知识 形态学运算是用 集合 来定义的 。 在图像处理中 使用两类像素集合的形态学:目标元素 和 结构元 SE 。 通常目标定义为前景像素集合,结构…

Docker如何安装基础镜像服务

目录 一、前言二、 环境安装1.docker安装2.mysql安装3.redis安装4.nginx安装5.nacos安装 一、前言 本文章讲述从0到1安装docker 及相关依赖服务镜像如何安装,安装之前,确保开放所需要的端口或者关闭防火墙。 外部机器不能直接访问容器,网是…

富士施乐打印机-查看端口号

快速查看打印机端口,只需三步骤 转载于:https://blog.51cto.com/bbllll/1719415

DocuCentre SC2020 打印机连接

驱动下载地址: https://support-fb.fujifilm.com/setupDriverForm.do?ctry_codeCN&lang_codezh_CN&d_langzh_CN&pidDCSC2020#anchor0安装流程: https://www.office26.com/computer/computer_24100.htmlbug修复: 通过实验室的…

打印机驱动下载后只能打印单面(设置双面打印)解决方法

一、打开控制面板找到设备和打印机 二、右击打印机选择打印机属性 三、在设备设置下的双面打印选择已安装 remark:或者通过设置找到打印机,打开打印机属性同样设置即可。

wireshark协议识别的基本原理

wireshark协议识别的基本原理 IP头部 协议字段 表 基于IP协议的一些服务是通过IP协议报文头部信息的协议字段的值去判断的 IP头格式 IP头部协议字段表 Decimal Keyword Protocol References 十进制 关键字 协议全…

uniapp同目录的相对地址_如何修改或固定爱普生网络打印机或网络扫描仪的IP地址?...

第一步:点击下载并安装EpsonNet Config软件。第二步:点击“开始”→“所有程序”→“EpsonNet” →“EpsonNet Config”启动软件,如图(1)。 第三步:启动EpsonNet Config软件后,可以搜索到您局域网中连接的爱普生网络打…

英语语音篇 - 自然拼读

自然拼读学习过程: 建立字母与字母自然发音之间的直接联系 掌握26个英文字母的本音和自然发音 拼读元音辅音、辅音元音 单元音字母的拼读练习。 特殊:单音节词,以元音结尾,这个元音发字母音。 拼读辅音元音辅音 单元音字母的拼读练…

一文读懂字符编码(ASCII、ISO 8859、GB系列、Unicode)

一文读懂字符编码(ASCII、ISO 8859、GB系列、Unicode) 一、字符编码相关组织1.1 ANSI 美国国家标准学会1.2 Ecma 国际1.3 ISO/IEC1.4 统一码联盟 二、单字节字符系统2.1 ASCII 字符集 & 字符编码2.1.1ASCII 字符集2.1.2 ASCII 编码方式 2.2 ISO 8859…