2016-01-21 60 views
2

我正在用Python numpy進行計算。這是一個由此產生的numpy數組:在什麼時候我應該擔心numpy值下溢?

[ 5.15054786e-11 5.15251385e-11 5.15262922e-11 ..., 5.21100674e-11 
5.21097550e-11 5.21088179e-11] 

這些都很小。在我的計算中,我應該擔心什麼時候出現下溢?這些需要非常精確。是否有值得擔心的明確值範圍,或者可能是指出這個值的參考?

+1

答案取決於你的數據的類型。 'float'和'double'具有不同的預定義,但對於'1e-11',兩者應該沒有問題。 –

+4

如果您擔心下溢,您可以使用'np.seterr'來警告/升級遇到下溢時。 –

回答

3

表示的最小normal number在64位浮點數是:

>>> 2**-1022 
2.2250738585072014e-308 

也就是說範圍可以被使用denormal numbers,其採取延長多一點的最小向下:

>>> 2**(-1022 - 52) 
5e-324 

但:

>>> 2**(-1022 - 53) 
0.0 

另一個相關的小數字(再次爲64位數字)將是:

>>> 2**-52 
2.220446049250313e-16 

因爲:

>>> 1 + 2**-52 
1.0000000000000002 

但:

>>> 1 + 2**-53 
1.0 
相關問題