《从零开始学Swift》学习笔记(Day 15)——请注意数字类型之间的转换



原创文章,欢迎转载。转载请注明:关东升的博客

    在C、Objective-C和Java等其他语言中,整型之间有两种转换方法:
    从小范围数到大范围数转换是自动的;
    从大范围数到小范围数需要强制类型转换,有可能造成数据精度的丢失。
    而在Swift中这两种方法是行不通的,需要通过一些函数进行显式地转换,代码如下:
    let historyScore:UInt8 = 90
    let englishScore:UInt16 = 130
    let totalScore = historyScore + englishScore  //错误
    程序就会有编译错误,原因是historyScore是UInt8类型,而englishScore是UInt16类型,它们之间不能转换。
两种转换方法:
    一种是把UInt8的historyScore转换为UInt16类型。由于是从小范围数转换为大范围数,这种转换是安全的。
代码:
let totalScore = UInt16(historyScore) + englishScore   //是正确的转换方法。
    另外一种是把UInt16的englishScore转换为UInt8类型。由于是从大范围数转换为小范围数,这种转换是不安全的,如果转换的数比较大可能会造成精度的丢失。
代码:
let totalScore = historyScore + UInt8(englishScore)  //是正确的转换方法。
本例中englishScore的值是130,这个转换是成功的,如果把这个数修改为1300,虽然程序编译没有问题,但是会在控制台中输出异常信息。
整型与浮点型之间的转换
    整型与浮点型之间的转换与整型之间的转换类似:
        let historyScore:Float = 90.6   
        let englishScore:UInt16 = 130 
        let totalScore = historyScore + englishScore  //错误  
        let totalScore = historyScore + Float(englishScore)  //正确,安全
        let totalScore = UInt16(historyScore) + englishScore  //正确,小数被截掉 


欢迎关注关东升新浪微博@tony_关东升
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
 
更多精品iOS、Cocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
智捷课堂论坛网站:http://51work6.com/forum.php




http://www.niftyadmin.cn/n/1036503.html

相关文章

关东升的iOS实战系列图书 《iOS实战:入门与提高卷(Swift版)》已经上市

承蒙广大读者的厚爱我的 《iOS实战:入门与提高卷(Swift版)》京东上市了,欢迎广大读者提出宝贵意见。http://item.jd.com/11766718.html欢迎关注关东升新浪微博tony_关东升。 关注智捷课堂微信公共平台&am…

cocos2d-x设计模式发掘之一:单例模式

作者: firedragonpzy 原地址:http://www.firedragonpzy.com.cn/index.php/archives/1781本系列文章我将和大家一起来发掘cocos2d-x中所使用到的设计模式,同样的,这些模式在cocos2d-iphone中也可以找到其身影。声明…

《从零开始学Swift》学习笔记(Day 17)——Swift中数组集合

原创文章,欢迎转载。转载请注明:关东升的博客数组(Array)是一串有序的由相同类型元素构成的集合。数组中的集合元素是有序的,可以重复出现。声明一个Array类型的时候可以使用下面的语句之一。…

《从零开始学Swift》学习笔记(Day 18)——有几个分支语句?

原创文章,欢迎转载。转载请注明:关东升的博客 分支语句又称条件语句,Swift编程语言提供了if、switch和guard三种分支语句。if语句由if语句引导的选择结构有if结构、if-else结构和else-if结构3种。if结构示例代码如下…

《从零开始学Swift》学习笔记(Day 19)——函数参数传递

原创文章,欢迎转载。转载请注明:关东升的博客 函数的语法格式如下: func 函数名(参数列表) -> 返回值类型 {语句组return 返回值}关键字是func。多个参数列表之间可以用逗号(,)分隔&#x…

《从零开始学Swift》学习笔记(Day 20)——函数中参数的传递引用

原创文章,欢迎转载。转载请注明:关东升的博客 参数的传递引用类是引用类型,其他的数据类型如整型、浮点型、布尔型、字符、字符串、元组、集合、枚举和结构体全部是值类型。有的时候就是要将一个值类型参数以引用方式…

《从零开始学Swift》学习笔记(Day 21)——函数返回值

原创文章,欢迎转载。转载请注明:关东升的博客 返回值3种形式:无返回值、单一返回值和多返回值。无返回值函数所谓无返回结果,事实上是Void类型,即表示没有数据的类型。无返回值函数的语法格式…

《从零开始学Swift》学习笔记(Day 22)——闭包那些事儿!

原创文章,欢迎转载。转载请注明:关东升的博客 我给Swift 中的闭包一个定义:闭包是自包含的匿名函数代码块,可以作为表达式、函数参数和函数返回值,闭包表达式的运算结果是一种函数类型。Swift…