2024-04-18 09:11:19 发布
网友
我正在研究Python。我试过了数字间距(0)得到4.9406564584124654e-324,明显小于finfo(float),tiny=2.2250738585072014e-308
怎么可能?在
我在网上找不到答案,从浮点标准来看,这个数字当然是不可能的。在
好吧,让我们看看4.94e-324实际上是什么:
>>> from math import log >>> log(4.94e-324, 2) -1074.0
只是为了确保:
这绝对小于-1022,它应该是最小指数。事实上,它比最小值(有效位中的位数)要少。这里发生了一些有趣的事情。。。在
你现在得到的是一个subnormal浮点,它用0的指数编码(解释为意味着实际可能的最低指数),并放松了通常的规则,即有效位必须以二进制1开头,允许你以牺牲精度为代价来表示非常小的数:
>>> (5e-324).hex() '0x0.0000000000001p-1022'
好吧,让我们看看4.94e-324实际上是什么:
只是为了确保:
^{pr2}$这绝对小于-1022,它应该是最小指数。事实上,它比最小值(有效位中的位数)要少。这里发生了一些有趣的事情。。。在
你现在得到的是一个subnormal浮点,它用0的指数编码(解释为意味着实际可能的最低指数),并放松了通常的规则,即有效位必须以二进制1开头,允许你以牺牲精度为代价来表示非常小的数:
相关问题 更多 >
编程相关推荐