可以先參考筆記: ‣, SongHan 講解得非常清楚
Exponent $e$ 有 11 bits; Significant or Fraction or Mantissa $f$ 有 52 bits.
$e\neq0$ 且 $\neq\text{All }1$: Normal number
公式為: $(-1)^{s}\times1.f\times2^{e-1023}$
$e=0$: Subnormal number
公式為: $(-1)^s\times 0.f\times2^{1-1023}$, 所以當 $f=0$ 就可以表示真的數值 $0$.
$e=\text{All }1$: Inf or Nan.
在 normal number 情況下, eps 表示為 $1$ 與下一個最近的 normal number 之間的差距
根據公式數值 $1$ 可表示為 $s=0$, $e=1023$, $f=0$.
而下一個距離 $1$ 最近的 normal number 為 $s=0$, $e=1023$, $f=2^{-52}$.
所以 $eps=2^{-52}=2.2204e-16$.
Modified from https://x.com/b0rk/status/1624094389399171088
注意到如果 $0<y/x<eps/2$ 時, 則 $x+y=x$.
這是因為 $x+y=x(1+y/x)$, 而 $y/x<eps/2$ 距離下一個可以表示的數值一半都不到就被 rounding 掉了.
注意到由於 normal number 公式的關係 (參考這個圖示), 數值之間的間格會成 exponent 方式成長, 所以下一次 $2$ 與最接近大於 $2$ 的數值變成 $2*eps$.
因此 $2+\epsilon=2$ (發生 round-off), 但是 $2-\epsilon\neq 2$, 注意看下圖可以表示的 machine number 就知道