为什么2 **-1025!= 0.0在Python中

问题描述 投票:2回答:1

根据IEEE754的规范,以64位编码的浮点数的指数为11位,尾数为52位。因此,可以编码为浮点数的较小数字应为2**(-2**10)。我认为是正确的wikipedia page,给出了更精确的2**-1022值,其十进制值大约为2.2250738585072014e-308

但是,对于Python,我可以将其用作浮点数,例如2**-1052等。计算机的实际限制为2**-1074。从此page of the official documentation开始,Python通常符合IEEE754。

同时,最大值为2**1023,这是IEEE754标准给定的值。

  • 为什么会这样?
  • 有人有解释吗?
  • Python中浮点数的实际编码是什么?
  • 为什么指数范围等于1074+1023+1,即2098,不是2的幂?
python floating-point precision ieee-754
1个回答
0
投票

binary64使用有偏指数和53位有效数字编码数字。

[有偏指数为1或更大时,值为:1.the_52_bit_encoded_“尾数” * 2 有指数-偏]]。

[当有偏指数为0时,值为:0.the_52_bit_encoded_“尾数” * 2 1-偏倚

。对于

normal

值,OP是正确的主意。但是存在sub-normal数字,其数字在0.the_52_bit_encoded_“ mantissa”中具有各种前导零。最小的非零值就是0。(51_zeros)1 * 2 1-bias或2 -1074
© www.soinside.com 2019 - 2024. All rights reserved.