使用WinPython 3.4.4.2,我得到了以下奇怪的结果:

>>> 2**-1075
5e-324

也就是说,与2**-1074相同,而在双浮点表示中2**-1075应该为零。使用位于https://www.python.org/shell/地址的Python 3.5.1,我得到了预期的0。
有谁能帮我弄明白怎么回事吗?
谢谢你

最佳答案

最小的可重新呈现的非规范化浮点数大于或小于零的是:5e-324和-5e-324。
5e-324是非规范化最小值,可以通过将最小浮点数(2.2250738585072014e-308)与浮点epsilon(2.220446049250313e-16)相乘来实现。

import sys
print(sys.float_info.min*sys.float_info.epsilon)

输出:
5e-324

我在shell(Python 3.5.1)中也得到了相同的结果。地址https://www.python.org/shell/使用http://www.pythonanywhere.com/中的控制台,该控制台可以在其系统中控制此类操作。

07-28 00:54