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