【问题标题】:Why does Swift report CGFloat.pi.significand to be exactly pi/2?为什么 Swift 报告 CGFloat.pi.significand 正好是 pi/2?
【发布时间】:2022-07-24 02:16:32
【问题描述】:

运行 Xcode 11.3

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

print(CGFloat.pi.significand == CGFloat.pi/2).   // true

我希望显着等于尾数。我错过了什么吗?

【问题讨论】:

  • "我预计显着性等同于尾数" 它等同于尾数。你认为 pi 的尾数是多少?

标签: swift cgfloat mantissa


【解决方案1】:

我们声明significand如下。

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

我假设pi = 3.14

所以pi = 1.57 * 2 <sup>1</sup> 其中1.57significand

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

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

根据apple documentation

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

更新

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

【讨论】:

  • 要完成,所有介于 2 和 for 之间的数字都有有效数字 = number/2,因为有效数字在 1 和 2 之间。