gpt4 book ai didi

python - float64 到 float32 的转换给出了意想不到的结果

转载 作者:太空狗 更新时间:2023-10-30 00:55:52 24 4
gpt4 key购买 nike

当我将 float64 数字转换为 float32 数字时,我得到了一个奇怪的结果:

In [22]: np.float32(20140131.0)
Out[22]: 20140132.0

为什么会这样?

最佳答案

20140131.0 不能表示为 32 位整数。

32 bit float

64 bit float

对于 float ,在每个范围内,数字是均匀分布的。

所以它是 (1+M) * 2^(E)

所以 20140131.0 在 2^24 到 2^25 的范围内。该范围内有 16,777,216 个数字,但只有 8,388,608 个可表示的 float 。所以你只能表示偶数。

由于在 32 位 float 中,尾数只有 23 位,整数最多只能表示 2^24。在此之上,epsilon > 1。其中 epsilon 是两个相邻 float 之间的差值。

至于 python float ,我相信它们是这样工作的:

python 中的 float 通常不是 32 位或 64 位的,因此这不是问题。长度自动调整。购买您将它们转换为特定类型,因此您会看到缺乏解决方案。对于 64 位整数,尾数中有 52 位,因此在超过 2^53 之前您不会看到此问题。

此外,数字四舍五入到最接近的 float 的方式通常以系统范围的方式定义(我认为),但 python 的转换可能会超过这个规则,我并不完全熟悉它。

关于python - float64 到 float32 的转换给出了意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23770993/

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