gpt4 book ai didi

python - 有人可以解释这种浮点行为吗?

转载 作者:太空狗 更新时间:2023-10-30 02:06:10 25 4
gpt4 key购买 nike

灵感来自 this question ,我试图找出那里究竟发生了什么(我的回答更直观,但我无法完全理解其中的原因)。

我相信它归结为这个(运行 64 位 Python):

>>> sys.maxint
9223372036854775807
>>> float(sys.maxint)
9.2233720368547758e+18

Python 使用 IEEE 754 浮点表示法,它有效地具有 53 位有效位。但是,据我所知,上面示例中的有效位需要 57 位(如果删除隐含的前导 1,则为 56 位)来表示。有人可以解释这种差异吗?

最佳答案

也许以下内容将有助于理清思路:

>>> hex(int(float(sys.maxint)))
'0x8000000000000000L'

这表明 float(sys.maxint) 实际上是 2 的幂。因此,在二进制中它的尾数恰好是 1。在 IEEE 754 中,前导 1. 是隐含的,因此在机器表示中,该数字的尾数由全零位组成。

其实代表这个数字的IEEE位模式如下:

0x43E0000000000000

观察只有前三个半字节(符号和指数)是非零的。有效数完全由零组成。因此,它不需要 56(实际上也不是 53)位来表示。

关于python - 有人可以解释这种浮点行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5431517/

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