gpt4 book ai didi

python - 为什么 numpy.spacing(0) 给我一个不可能的数字?

转载 作者:太空宇宙 更新时间:2023-11-03 12:27:52 24 4
gpt4 key购买 nike

我正在研究 Python。我试过 numpy.spacing(0) 得到了 4.9406564584124654e-324,它明显小于 finfo(float).tiny = 2.2250738585072014e-308

这怎么可能?

我在网上没有找到答案,这个数字按照浮点标准当然是不可能的。

最佳答案

好吧,让我们看看 4.94e-324 到底是什么:

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

只是为了确保:

>>> 2**-1074
5e-324

这绝对小于应该是最小指数的 -1022。事实上,它比最小值少52,也就是有效位数的位数。这里发生了一些有趣的事情......

你实际上得到的是一个 subnormal float,它用零指数编码(解释为实际可能的最低指数),并放宽了有效数字必须以二进制 1 开头的通常规则,允许您以精度为代价表示非常小的数字:

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

关于python - 为什么 numpy.spacing(0) 给我一个不可能的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24408207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com