Rust 中浮点数类型 (Floating-Point Types) 有哪些?

推荐答案

Rust 中的浮点数类型主要有两种:

  1. f32:32 位浮点数,单精度浮点数。
  2. f64:64 位浮点数,双精度浮点数。

默认情况下,Rust 使用 f64 作为浮点数的默认类型,因为它在现代 CPU 上通常具有与 f32 相似的性能,但提供了更高的精度。

本题详细解读

浮点数类型概述

Rust 提供了两种浮点数类型:f32f64。这两种类型分别对应 IEEE 754 标准中的单精度和双精度浮点数。

  • f32:32 位浮点数,占用 4 个字节,提供大约 7 位十进制有效数字的精度。
  • f64:64 位浮点数,占用 8 个字节,提供大约 15 位十进制有效数字的精度。

默认浮点数类型

在 Rust 中,如果没有显式指定浮点数类型,编译器会默认使用 f64。这是因为在现代 CPU 架构中,f64 的性能通常与 f32 相当,但提供了更高的精度。因此,f64 是更常用的浮点数类型。

浮点数的表示范围

  • f32:可以表示的范围大约是从 1.18e-383.4e38
  • f64:可以表示的范围大约是从 2.23e-3081.8e308

浮点数的精度

  • f32:提供大约 7 位十进制有效数字的精度。
  • f64:提供大约 15 位十进制有效数字的精度。

浮点数的特殊值

Rust 的浮点数类型支持 IEEE 754 标准中定义的特殊值,包括:

  • 正无穷大 (INFINITY):表示超出浮点数表示范围的正数。
  • 负无穷大 (NEG_INFINITY):表示超出浮点数表示范围的负数。
  • 非数字 (NaN):表示未定义或不可表示的结果。

浮点数的操作

Rust 提供了丰富的浮点数操作,包括基本的算术运算(加、减、乘、除)、比较运算、以及一些数学函数(如 sqrtsincos 等)。需要注意的是,由于浮点数的精度问题,直接比较两个浮点数是否相等可能会导致意外的结果。通常建议使用一个小的误差范围(epsilon)来进行浮点数的比较。

示例代码

在这个示例中,x 被显式指定为 f32 类型,而 y 则默认为 f64 类型。

纠错
反馈