0
我正在查看下面的代码的输出。当我增加1到float的最大值时,输出看起来就是我所期望的,但是当我做x = x * 1.5时,那么我将inf看作是我认为是浮点溢出的输出。我的问题是,从预期输出到inf的上限是多少?Python浮点溢出,float溢出时会发生什么?
x=sys.float_info.max
x=x+1
x
我正在查看下面的代码的输出。当我增加1到float的最大值时,输出看起来就是我所期望的,但是当我做x = x * 1.5时,那么我将inf看作是我认为是浮点溢出的输出。我的问题是,从预期输出到inf的上限是多少?Python浮点溢出,float溢出时会发生什么?
x=sys.float_info.max
x=x+1
x
Python的浮子不具有足够的精确度来存储+ 1
为sys.float_info.max
,所以操作实际上等效于添加零。下面的对比实际上返回True
:
print sys.float_info.max+1==sys.float_info.max
只有当你开始添加大到足以导致浮球的IEE754二进制表示的变化的数字,你会得到inf
,例如:
x+0.00000000000000001E308
返回inf
在我的机器上(Windows 64bit)
谢谢!这就是我想的,只是想得到一个明确的答案。 – user2997606
我不认为真的存在一致的限制。 'x ** 2'得到一个错误,但'x * x'没有。 – zondo
@zondo - 那么,在IEE754浮动可以表示的最大值的意义上存在一致的限制。 –
我不清楚问题是什么。你是否要求'sys.float_info.max + x'是'inf'的最小'x'? – DSM