特定范围内有多少个不同的浮点数?

Arl*_*len 13 language-agnostic ieee-754

有多少可表示彩车之间是否有0.00.5?又有多少表现的彩车之间是否有0.51.0?我对它背后的数学更感兴趣,我需要答案floatsdoubles.

Ker*_* SB 14

对于IEEE754浮点数,这是相当直接的.启动在线浮点计算器并继续阅读.

2的所有纯幂都用尾数表示0,这实际上是1.0由于隐含的前导1.指数通过偏差来校正,因此1和0.5分别是1.0×2 0和1.0×2 -1,或者是二进制:

      S    Ex + 127    Mantissa - 1                Hex

1:    0    01111111    00000000000000000000000     0x3F800000
      +     0 + 127    1.0

0.5:  0    01111110    00000000000000000000000     0x3F000000
      +    -1 + 127    1.0
Run Code Online (Sandbox Code Playgroud)

由于这种形式表示的浮点数的排序顺序与它们的二进制表示顺序相同,我们只需要取二进制表示的积分值的差值,得出结论:有0x800000 = 2 23,即8,388,608单精度区间[0.5,1.0]中的浮点值.

同样,答案是2 52 for double和2 63 for long double.

  • ......在"0.0"和"0.5"之间有"0x3F000000"可表示的单精度浮点数,超过10亿.太好了! (3认同)