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