Swift将一种数字类型转换为另一种数字类型

示例

func doSomething1(value: Double) { /* ... */ }
func doSomething2(value: UInt) { /* ... */ }

let x = 42               // x是一个整数
doSomething1(Double(x))  // 将x转换为Double
doSomething2(UInt(x))    // 将x转换为UInt

如果值上溢或下溢,则整数初始化器会产生运行时错误

Int8(-129.0) // 致命错误:浮点值不能转换为Int8,因为它小于Int8.min
Int8(-129)   // 崩溃:EXC_BAD_INSTRUCTION / SIGILL
Int8(-128)   // 好
Int8(-2)     // 好
Int8(17)     // 好
Int8(127)    // 好
Int8(128)    // 崩溃:EXC_BAD_INSTRUCTION / SIGILL
Int8(128.0)  // 致命错误:浮点值不能转换为Int8,因为它大于Int8.max

浮点数到整数转换将值舍入为零

Int(-2.2)  // -2
Int(-1.9)  // -1
Int(-0.1)  //  0
Int(1.0)   //  1个个个个
Int(1.2)   //  1个个个个
Int(1.9)   //  1个个个个
Int(2.0)   //  2

整数到浮点的转换可能是有损的

Int(Float(1_000_000_000_000_000_000))  // 999999984306749440