整数
整数范围
你可以访问不同整数类型的min
和max
属性来获取对应类型的最大值和最小值:
let minValue = UInt8.min // minValue 为 0,是 UInt8 类型的最小值
let maxValue = UInt8.max // maxValue 为 255,是 UInt8 类型的最大值
Int
一般来说,你不需要专门指定整数的长度。Swift 提供了一个特殊的整数类型Int
,长度与当前平台的原生字长相同:
- 在32位平台上,
Int
和Int32
长度相同。 - 在64位平台上,
Int
和Int64
长度相同。
浮点数
浮点数是有小数部分的数字,比如3.14159
,0.1
和-273.15
。
浮点类型比整数类型表示的范围更大,可以存储比Int
类型更大或者更小的数字。Swift 提供了两种有符号浮点数类型:
Double
表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。Float
表示32位浮点数。精度要求不高的话可以使用此类型。
注意:
Double
精确度很高,至少有15位数字,而Float
最少只有6位数字。选择哪个类型取决于你的代码需要处理的值的范围。
数值型字面量
整数字面量可以被写作:
- 一个十进制数,没有前缀
- 一个二进制数,前缀是
0b
- 一个八进制数,前缀是
0o
- 一个十六进制数,前缀是
0x
下面的所有整数字面量的十进制值都是17
:
let decimalInteger = 17
let binaryInteger = 0b10001 // 二进制的17
let octalInteger = 0o21 // 八进制的17
let hexadecimalInteger = 0x11 // 十六进制的17
下面的这些浮点字面量都等于十进制的12.1875
:
let decimalDouble = 12.1875
let exponentDouble = 1.21875e1
let hexadecimalDouble = 0xC.3p0
数值类字面量可以包括额外的格式来增强可读性。整数和浮点数都可以添加额外的零并且包含下划线,并不会影响字面量:
let oneMillion = 1_000_000
整数转换
如果数字超出了常量或者变量可存储的范围,编译的时候会报错:
let cannotBeNegative: UInt8 = -1
// UInt8 类型不能存储负数,所以会报错
let tooBig: Int8 = Int8.max + 1
// Int8 类型不能存储超过最大值的数,所以会报错
示例代码:
import Foundation
println("Hello, World!")
//var age:Int? = 11
var age2 = "we"
var age:Int? = age2.toInt()
println(age)
println(Int.max)
println(Int.min)
println(UInt.max)
println(UInt.min)
var pi:Double = 3.14
var pii:Float = 3.1415
println(pi + Double(pii))
let b = 0b0010
let a = 0o1276
let c = 0x12F
println(c)