sys.float_info.epsilon
返回什么?Python epsilon不是最小的数字
在我的系统我得到:
>>> sys.float_info.epsilon
2.220446049250313e-16
>>> sys.float_info.epsilon/2
1.1102230246251565e-16
>>> 0 < sys.float_info.epsilon/2 < sys.float_info.epsilon
True
这怎么可能?
编辑:
你没事吧,我想小量确实分钟做什么。所以我的意思是sys.float_info.min
。
EDIT2
每个人,特别是约翰Kugelman,谢谢您的回答!
一些玩弄我做了澄清事情对自己说:
>>> float.hex(sys.float_info.epsilon)
'0x1.0000000000000p-52'
>>> float.hex(sys.float_info.min)
'0x1.0000000000000p-1022'
>>> float.hex(1 + a)
'0x1.0000000000001p+0'
>>> float.fromhex('0x0.0000000000001p+0') == sys.float_info.epsilon
True
>>> float.hex(sys.float_info.epsilon * sys.float_info.min)
'0x0.0000000000001p-1022'
所以epsilon * min
给出了最小的正尾数(或尾数)和最小的指数数量。
我的例子对于sys.float_info.min而言是一样的,而不是sys.float_info.epsilon。你如何解释这个? –
小于'min'的值都是低于正常值的。 'min * epsilon'是真正的最小浮点数。如果你除以2,它会下溢到0。 –