Swift Academy · 课时

显式数值转换

有意在数值类型之间转换,以避免错误。

第 3 / 4 课13 个步骤

显式数值转换 是 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 整数类型及其范围
  2. 浮点数:Double 与 Float
  3. 显式数值转换
  4. 数值字面量与下划线
← 返回 Swift Academy