为什么是数字间距(0)给我一个不可能的数字?

2024-04-18 09:11:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究Python。我试过了数字间距(0)得到4.9406564584124654e-324,明显小于finfo(float),tiny=2.2250738585072014e-308

怎么可能?在

我在网上找不到答案,从浮点标准来看,这个数字当然是不可能的。在


Tags: 答案标准数字float浮点tiny间距finfo
1条回答
网友
1楼 · 发布于 2024-04-18 09:11:19

好吧,让我们看看4.94e-324实际上是什么:

>>> from math import log
>>> log(4.94e-324, 2)
-1074.0

只是为了确保:

^{pr2}$

这绝对小于-1022,它应该是最小指数。事实上,它比最小值(有效位中的位数)要少。这里发生了一些有趣的事情。。。在

你现在得到的是一个subnormal浮点,它用0的指数编码(解释为意味着实际可能的最低指数),并放松了通常的规则,即有效位必须以二进制1开头,允许你以牺牲精度为代价来表示非常小的数:

>>> (5e-324).hex()
'0x0.0000000000001p-1022'

相关问题 更多 >