我认为python中的最大整数可以通过调用获得sys.maxint.
最大的是什么float或long在Python?
我需要找到一个numpy.float64尽可能接近零的值.
Numpy提供了几个允许执行类似操作的常量:
np.finfo(np.float64).eps = 2.2204460492503131e-16np.finfo(np.float64).tiny = 2.2250738585072014e-308这些都相当小,但是当我这样做时
>>> x = np.finfo(np.float64).tiny
>>> x / 2
6.9533558078350043e-310
Run Code Online (Sandbox Code Playgroud)
结果甚至更小.当使用即兴二进制搜索时,我可以1e-323在值向下舍入到之前得到约0.0.
我错过了numpy中的常数吗?或者,有没有正确的方法来做到这一点?
什么sys.float_info.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
Run Code Online (Sandbox Code Playgroud)
这怎么可能?
编辑:
你没事,我以为epsilon会做min所做的事.所以我的意思是sys.float_info.min.
EDIT2
每个人,尤其是约翰库格曼,谢谢你的回答!
有些人在玩我自己澄清事情:
>>> 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'
Run Code Online (Sandbox Code Playgroud)
因此epsilon * min给出具有最小正有效数(或尾数)和最小指数的数字.
我正在使用这一行生成一系列随机浮点数:
random.random()*(maxval-minval) + minval
Run Code Online (Sandbox Code Playgroud)
我正在使用它为给定变量添加可变噪声,并且添加的噪声量取决于一系列因素.在某些情况下,噪音应该很高,以至于在实践中原始值会丢失,而且我有一个完全随机的值.
在这种情况下,代码工作使用有限值,但如果我使用"inf"它返回NaN.是否有解决方法允许包含无穷大的连续随机范围?我不想篡改os.random()因为它是机器特定的.