Swift - 整数和浮点数
Swift 中 ,数字分为整数 (例如 :1 / 10 / 100 /1000 等) 和浮点数 ( 例如 : 3.14 / 1.44 / 2.71 等)
整形 - Int & UInt
根据一个整形变量所占的内存空间 (8 / 16 / 32 /64-bit) 以及整数是否带有符号 (Unsinged) , Swift 一共定义了8中不同类型的整数类型 :
- Int (8 / 16 / 32 / 64)
- UInt (8 / 16 / 32 / 64)
Int 的四个类型 分别表示 8 / 16 / 32 /64-bit 的有符号整数
UInt 的四个类型分别代表 8 / 16 / 32 /64-bit 的无符号整数
但在 Swift 中通常不会去指定具体的类型 ,Swift 编译器会根据目标编译平台 ,把 Int 或 UInt 转换成对应的整数。
在64位平台上 ,可以分别使用 min 和 max 方法,来查看在64位机器上整数类型可以表达的数值范围:
1 | Int.max //9223372036854775807 |
整数的常用表达方式
在 Swift 里,我们可以用多种方式来表示一个整数。 包括使用 10 进制 、 16 进制 、 8 进制 、 2 进制:
1 | let fifteenInDecimal = 10 //10 |
以及可以在数字中使用分隔符 :
1 |
|
除非我们所在硬件平台有特别明确的需求需要我们使用 UInt 来定义无符号整数 , 否则我们应该尽可能使用 Int 来表达所有的整数类型 , 哪怕我们确定一个整数一定是一个非负数。这会给我们减少很多不必要的类型转换的麻烦 。
浮点型 Float & Double
在 Swift 中 ,根据可以表达的精度范围,有两种不同的浮点类型 :
- Float : 最多表达6位精度的浮点数
- Double : 至少可以表达15位精度的浮点数
1 |
|
除了使用常规的十进制表达浮点数之外 , 我们还可以使用科学计数法 。 例如 ,表示浮点数 PI :
1 | var PI = 0.314e1 //3.14 |
如果没有明确的需求,我们应该用Double来统一定义浮点数
和数字有关的 Type Inference
在 Swift 中 ,我们使用一个整数 , 编译器会将它推导为 Int , 使用一个浮点数 ,编译器会将它编译成 Double
使用 type(of:) 查看一个变量或者常量的类型
1 | let four = 5 |
在 Swift 中 ,可以对不同类型数字的字面量进行计算
1 |
|
但是在 Swift 中 ,不能把不同数字类型的变量直接进行算术运算
1 | let zeroPointOne = 0.1; |
当对变量进行算数运算的时候,所有变量的类型必须是相同的,如果变量类型不同,我们必须明确将其中的一些变量进行类型转换。像这样:
1 |
|
通过 Double(value) 重新初始化了一个 Double 类型的 one 。