显式数值转换
有意在数值类型之间转换,以避免错误。
显式数值转换 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。
Swift 要求显式转换
Swift 不会自动在数值类型之间进行转换。要组合使用 Int 和 Double,您必须显式转换其中一个。
let count = 3
let price = 2.5
let total = Double(count) * price
print(total)为什么没有隐式转换
隐式转换可能会悄悄丢失数据或改变含义。Swift 要求您明确表达意图,从而避免隐蔽的错误。
let whole = 7
let fraction = 0.5
let result = Double(whole) + fraction
print(result)将 Int 转换为 Double
将整数传入 Double(...),即可得到它的浮点形式。在进行真正的除法之前需要这样做。
let a = 7
let b = 2
let ratio = Double(a) / Double(b)
print(ratio)将 Double 转换为 Int
对 Double 使用 Int(...) 会向零截断,丢弃小数部分,而不是进行舍入。
let value = 3.99
print(Int(value))
print(Int(-3.99))转换前先舍入
如果您希望进行舍入而不是截断,请先调用 .rounded(),然后再转换为 Int。
let value = 3.6
let rounded = Int(value.rounded())
print(rounded)在整数类型之间转换
即使是整数到整数的转换也需要显式进行,例如 Int(small) 或 Int8(big),因为它们的取值范围不同。
let small: Int8 = 100
let big: Int = Int(small)
print(big + 1000)导致溢出的转换
将不适合目标类型的值进行转换,会在运行时触发错误。如果不确定,请先验证取值范围。
let n = 200
if n <= Int(Int8.max) {
print("fits")
} else {
print("would overflow Int8")
}可失败的数值初始化器
某些转换使用可失败的初始化器,例如 Int8(exactly:)。它们会返回可选值;当值无法精确适配时,返回 nil。
let ok = Int8(exactly: 100)
let bad = Int8(exactly: 300)
print(ok as Any)
print(bad as Any)将字符串转换为数字
将 String 转换为数字同样需要显式操作,并且可能失败;如果文本不是有效数字,就会返回可选值。
let text = "42"
if let n = Int(text) {
print("Parsed:", n)
}
print(Int("hello") as Any)组合不同类型的数值运算
一种典型模式是:先将所有操作数转换为同一种类型,完成运算,然后在需要时将最终结果转换回去。
let items = 5
let pricePerItem = 1.99
let total = Double(items) * pricePerItem
let rounded = (total * 100).rounded() / 100
print("Total:", rounded)转换让代码更安全
显式转换会记录精度变化发生的位置,让数值代码更容易审查和理解。
let measured = 9.81
let asInt = Int(measured)
let backToDouble = Double(asInt)
print(measured, asInt, backToDouble)快速检查
预测将 Double 转换为 Int 的结果。
回顾:显式数值转换
您已经学到,Swift 从不隐式转换数值类型;Int(...) 会截断 Double,而 Double(...) 会扩展 Int;当转换无法成功时,Int8(exactly:) 和 Int("text") 这样的可失败初始化器会返回可选值。
let pieces = 7
let share = Double(pieces) / 2.0
print("Share:", share)
print("Truncated:", Int(share))用 AI 导师学习 Swift — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 122
- 课程
- 409
常见问题解答
「显式数值转换」课时是免费的吗?
是的 — 「显式数值转换」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。
「显式数值转换」这节课中我会学到什么?
有意在数值类型之间转换,以避免错误。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Swift Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「显式数值转换」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Swift Academy 课中编写并运行代码吗?
能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。