2016-03-06 297 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