Zig Academy · 课时

浮点数:f32 与 f64

处理带小数的数字。

第 2 / 4 课13 个步骤

浮点数:f32 与 f64 是 CoddyKit 上的免费 Zig Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Zig Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Zig Academy 课程共包含 4 节课。

带小数的数字

需要小数时,Zig 提供浮点类型。它们可以存储 3.14 这样的分数值,而不只是整数。

f64 是常用选择

f64 类型使用 64 位存储双精度浮点数。当您需要较高精度和较大范围时,它通常是默认选择。

const pi: f64 = 3.14159;

f32 以精度换取空间

f32 使用 32 位。它可以节省内存,速度也可能更快,但比 f64 能存储的有效数字更少。

const ratio: f32 = 0.5;

Zig 还有更多浮点宽度

除了 f32 和 f64,Zig 还支持 f16 和 f128。您可以选择在精度、内存和速度之间取得平衡的宽度。

浮点字面量需要小数点

浮点字面量包含小数点,例如 2.0。只写 2 会得到整数,这是另一种类型的值。

const half = 0.5;
const one = 1.0;

科学计数法同样可用

您可以使用指数来书写非常大或非常小的浮点数。形式 1.5e3 表示 1.5 乘以 10 的三次方,也就是 1500。

const big: f64 = 1.5e3;

进行浮点运算

常用运算符同样适用于浮点数。两个浮点数相除时会保留小数部分,而不是将其丢弃。

const result: f64 = 7.0 / 2.0; // 3.5

浮点数是近似值

浮点数无法精确存储每一个小数。细微的舍入误差意味着 0.1 加 0.2 可能不严格等于 0.3。

使用容差进行比较

由于存在舍入误差,请避免测试浮点数是否完全相等。应改为检查 difference 是否小于一个很小的阈值。

const close = @abs(a - b) < 0.0001;

将整数转换为浮点数

要将整数转换为浮点数,您必须使用 @floatFromInt 明确进行转换。Zig 不会悄悄混用这两种数字类型。

const n: i32 = 10;
const f: f64 = @floatFromInt(n);

特殊浮点值

浮点数还可以表示无穷大和非数字值。这些值可能由除以零等运算产生,标准库为它们提供了名称。

快速检查

您用一个浮点数除以另一个浮点数,并希望保留小数结果。关于 Zig 中的浮点运算,下面哪项说法正确?

回顾

一般小数请使用 f64,需要节省空间时使用 f32。请记住,浮点数是近似值,因此应使用容差进行比较,并有意进行类型转换。🎯

免费开始

用 AI 导师学习 Zig — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「浮点数:f32 与 f64」课时是免费的吗?

是的 — 「浮点数:f32 与 f64」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Zig Academy 课程的其余内容,请升级到 CoddyKit PRO。 Zig Academy 课程共包含 4 节课。

「浮点数:f32 与 f64」这节课中我会学到什么?

处理带小数的数字。 你通过在浏览器中直接运行的动手代码来练习 Zig Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Zig Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Zig Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「浮点数:f32 与 f64」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Zig Academy 课中编写并运行代码吗?

能。每节 Zig Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 定长整数:i32、u8、usize
  2. 浮点数:f32 与 f64
  3. bool、void 与 comptime 类型
  4. 数字字面量与下划线
← 返回 Zig Academy