文档章节

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

智捷课堂
 智捷课堂
发布于 2015/09/21 10:11
字数 514
阅读 45
收藏 1

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

    CObjective-CJava等其他语言中,整型之间有两种转换方法:

  •  从小范围数到大范围数转换是自动的;

  •  从大范围数到小范围数需要强制类型转换,有可能造成数据精度的丢失。

而在Swift中这两种方法是行不通的,需要通过一些函数进行显式地转换,代码如下:

 let historyScore:UInt8 = 90

 let englishScore:UInt16 = 130

 let totalScore = historyScore + englishScore  //错误


程序就会有编译错误,原因是historyScoreUInt8类型,而englishScoreUInt16类型,它们之间不能转换。

 两种转换方法:

  • 一种是把UInt8historyScore转换为UInt16类型。由于是从小范围数转换为大范围数,这种转换是安全的。

代码:

let totalScore = UInt16(historyScore) + englishScore   //是正确的转换方法。

  • 另外一种是把UInt16englishScore转换为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

 

 

 

© 著作权归作者所有

智捷课堂

智捷课堂

粉丝 40
博文 239
码字总数 215495
作品 0
东城
私信 提问
Go语言基础学习:变量

Go语言基础学习(一)变量 猜你喜欢 Ceylon语言学习笔记(1) 《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言 go语言学习-常量 GO语言学习-复杂类型(2) Go语言学习...

d_watson
2016/04/15
13
0
关东升的《从零开始学Swift》第2版已经出版

关东升的《从零开始学Swift》第2版已经出版 大家好: 苹果2015WWDC大会发布了Swift2.0,它较之前的版本Swift1.x有很大的变化,所以我即将出版《从零开始学Swift》 《从零开始学Swift》将在《...

tony关东升
2016/02/24
0
0
关东升的《《从零开始学Swift》即将出版

大家好: 苹果2015WWDC大会发布了Swift2.0,它较之前的版本Swift1.x有很大的变化,所以我即将出版《从零开始学Swift》《从零开始学Swift》将在《Swift开发指南》第1版的基础上添加Swift2.0的...

智捷课堂
2015/08/17
109
0
《从零开始学Swift》学习笔记(Day 70)——Swift与Objective-C混合编程之

《从零开始学Swift》学习笔记(Day 70)——Swift与Objective-C混合编程之Swift与Objective-CAPI映射 原创文章,欢迎转载。转载请注明:关东升的博客 Swift与Objective-C API映射 在混合编程...

智捷课堂
2016/02/26
44
0
《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言

《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言 原创文章,欢迎转载。转载请注明:关东升的博客 在Swift语言出现之前,开发iOS或OS X应用主要使用Objective-C...

智捷课堂
2016/02/24
27
0

没有更多内容

加载失败,请刷新页面

加载更多

JAVA数据结构与算法(二)

栈 1) 栈的英文为 (stack) 2) 栈是一 个 先入后出 (FILO-First In Last Out) 的有序列表 。 3) 栈 (stack) 是限制线性表中元素的插入和删除 只能在线性表的同一端 进行的一种特殊线性表。允许...

aaa阿伟呀
8分钟前
2
0
聊聊nacos的ServiceReporter

序 本文主要研究一下nacos的ServiceReporter ServiceManager.init nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/core/ServiceManager.java @Component@DependsOn("nacosAppl......

go4it
14分钟前
2
0
文字太长想隐藏的字用省略号来代替

white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 是必须的,因为宽度需要固定它才知道那些文字是超出了范围 你会觉得这样的话那怎么看全部的文字呢?你可以在元素上...

前端老手
20分钟前
3
0
二叉树交换左右子树

树的实现类 public class TreeNode {public int val;public TreeNode left;public TreeNode right;public TreeNode(int x) {val = x;}public TreeNode(int val, TreeN......

jxlgzwh
34分钟前
11
0
在Workstation 15上测试vShere 6.7+vCenter Server

想学习vSphere,最好能在自己的电脑上搭建相应的学习环境,如下图所示: _________________________________ | ...

大别阿郎
37分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部