浮点数:Double 与 Float
在 Double 和 Float 之间进行选择,并处理精度问题。
浮点数:Double 与 Float 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。
浮点类型
Swift 有两种主要的浮点类型:Double(64 位)和 Float(32 位)。它们用于表示带小数部分的 numbers。
let d: Double = 3.14159
let f: Float = 3.14159
print(d, f)Double 是默认类型
当您编写没有类型注解的十进制字面量时,Swift 会推断其类型为 Double。Double 比 Float 提供更高的精度。
let value = 2.5
print(type(of: value))精度差异
Double 可以存储约 15 位有效十进制数字,而 Float 只能存储约 6 或 7 位。同一个字面量可能会打印出不同的结果。
let d: Double = 0.1234567890123456
let f: Float = 0.1234567890123456
print(d)
print(f)pi 常量
两种类型都提供 .pi。Double.pi 的精度高于 Float.pi。
print(Double.pi)
print(Float.pi)浮点算术运算
您可以对浮点数执行加法、减法、乘法和除法。除法会保留小数结果。
let radius = 2.0
let area = Double.pi * radius * radius
print("Area:", area)舍入方法
浮点值提供 .rounded(),以及 .rounded(.down) 和 .rounded(.up) 等变体。
let x = 2.7
print(x.rounded())
print(x.rounded(.down))
print(x.rounded(.up))向下取整、向上取整与截断
舍入规则可以让您向负无穷取整、向正无穷取整,或朝 zero 方向截断。
let n = -2.3
print(n.rounded(.down))
print(n.rounded(.up))
print(n.rounded(.towardZero))浮点数的不精确性
由于二进制表示方式的限制,某些小数无法精确存储。0.1 + 0.2 众所周知并不完全等于 0.3。
let sum = 0.1 + 0.2
print(sum)
print(sum == 0.3)安全比较浮点数
不要使用精确相等比较,而应在一个较小的容差(ε)范围内比较浮点数。
let sum = 0.1 + 0.2
let close = abs(sum - 0.3) < 0.0001
print("Close enough:", close)特殊浮点值
浮点类型可以表示 infinity 和 nan(非数字)。请使用 .isInfinite 和 .isNaN 进行检查。
let inf = Double.infinity
let notNum = Double.nan
print(inf.isInfinite)
print(notNum.isNaN)选择 Double 还是 Float
在一般数学计算中,请优先使用 Double 以获得更高的精度。只有在内存限制或特定硬件(例如图形处理)要求使用 32 位值时,才使用 Float。
let preciseAvg: Double = (10.0 + 3.0) / 4.0
print(preciseAvg)快速检查
回想一下,Swift 会为小数常量推断哪种类型。
回顾:Double 与 Float
您已经学到,Double(64 位,默认类型)比 Float(32 位)更精确;两者都提供 .pi 和舍入方法;浮点运算并不精确,因此应使用容差进行比较,而不是使用 ==。
let a = 0.1 + 0.2
print("Raw:", a)
print("Rounded:", a.rounded())
print("Within tolerance of 0.3:", abs(a - 0.3) < 1e-9)常见问题解答
「浮点数:Double 与 Float」课时是免费的吗?
是的 — 「浮点数:Double 与 Float」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。
「浮点数:Double 与 Float」这节课中我会学到什么?
在 Double 和 Float 之间进行选择,并处理精度问题。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Swift Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「浮点数:Double 与 Float」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Swift Academy 课中编写并运行代码吗?
能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。