为什么 Swift 报告 CGFloat.pi.significand 恰好是 pi/2?

eha*_*ro2 2 mantissa cgfloat swift

运行 Xcode 11.3

为什么 pi 的有效成分等于 pi/2?

print(CGFloat.pi.significand == CGFloat.pi/2).   // true
Run Code Online (Sandbox Code Playgroud)

我期望有效值等于尾数。我错过了什么吗?

Iam*_*ker 5

我们声明significand如下。

let magnitude = x.significand * F.radix ** x.exponent

我假设 pi = 3.14

那么 .​​pi = 1.57 * 2 11.57significand

如果我们将两边除以 2,你会得到pi/2 = 1.57

换句话说pi/2 = pi.significand。(这是一种特殊情况)。

根据苹果文档

有效数通常也称为尾数,但有效数是 IEEE 754 规范中的首选术语,以避免与对数小数部分使用尾数的混淆。

更新

正如 @Ptit 所提到的,2 到 4 之间的所有数字都满足参数 number/2 = number.significand

  • 完成后,2 和 for 之间的所有数字的有效数字 = number/2,因为有效数字在 1 和 2 之间。 (2认同)