2016-03-06 93 views
0

我正在查看下面的代码的输出。当我增加1到float的最大值时,输出看起来就是我所期望的,但是当我做x = x * 1.5时,那么我将inf看作是我认为是浮点溢出的输出。我的问题是,从预期输出到inf的上限是多少?Python浮点溢出,float溢出时会发生什么?

x=sys.float_info.max 
x=x+1 
x 
+0

我不认为真的存在一致的限制。 'x ** 2'得到一个错误,但'x * x'没有。 – zondo

+0

@zondo - 那么,在IEE754浮动可以表示的最大值的意义上存在一致的限制。 –

+0

我不清楚问题是什么。你是否要求'sys.float_info.max + x'是'inf'的最小'x'? – DSM

回答

2

Python的浮子不具有足够的精确度来存储+ 1sys.float_info.max,所以操作实际上等效于添加零。下面的对比实际上返回True

print sys.float_info.max+1==sys.float_info.max 

只有当你开始添加大到足以导致浮球的IEE754二进制表示的变化的数字,你会得到inf,例如:

x+0.00000000000000001E308 

返回inf在我的机器上(Windows 64bit)

+0

谢谢!这就是我想的,只是想得到一个明确的答案。 – user2997606