2016-10-01 42 views
-3

·行爲使用python X2

我的作業要求我設置:EPS = 2 ** - 52 EPS輸出隨後變爲:2.2204e-16

( 1. + EPS - 1 = 2.2204e-16)#預期

(1 + EPS/2 - 1 = 0.0)#什麼?

我的家庭作業只是要求我在第二個公式發生了什麼。我已經嘗試過使用不同的sigfigs來獲取浮點數和已審查的資源,但仍然不明白。任何幫助非常感謝!

+0

EPS/2。 - 1.不能爲零。不過,它可能是-1。有沒有錯別的地方? –

+0

爲什麼預計「eps - 1 = 2.2204e-16」?當'eps = 2。** - 52'(幾乎爲零)時,我預計'eps - 1'約爲-1(這也是我的Python2.7解釋器給我的)。 – Aufziehvogel

+4

你的意思是'(1 + eps) - 1'和'(1 + eps/2) - 1'? 「eps-1」是「-0.9999999999999998」,而不是「2.220446049250313e-16」。 –

回答

0

(1 + eps/2.0) - 1 = 0.0因爲eps/2.0太小,沿着1被適當地表示(它作爲稱爲吸收消除

在運行的Python典型的機器,存在可用於一個Python浮子的精度53位。如果你想進一步嘗試,Python會消除最小的部分,這樣可以正確表示數字。

在這種情況下,1 「勝」(1 「吸收」 eps/2),然後向。減去1,你會得到0.

+0

啊,好的非常感謝你! –