爲什麼python 計算sin (180)!=0

無論採用第一種方法還是第二種方法

>>> math.sin(math.pi)
1.2246467991473532e-16
>>> math.sin(180*math.pi/180)
1.2246467991473532e-16
>>> math.sin(90*math.pi/180)
1.0
>>> math.sin(0*math.pi/180)
0.0
>>> math.sin(45*math.pi/180)
0.7071067811865475
>>> math.sin(180*math.pi/180)
1.2246467991473532e-16
>>> math.cos(180*math.pi/180)+complex(0+1j)*math.sin(180*math.pi/180)
(-1+1.2246467991473532e-16j)
>>> abs(-1+1.2246467991473532e-16j)
1.0
>>> abs(1.2246467991473532e-16j)
1.2246467991473532e-16
>>> abs(1.2246467991473532e-16)
1.2246467991473532e-16
>>> abs(-1+1.2246467991473532e-16j+1)
1.2246467991473532e-16
>>> import numpy as np
>>> np.sin(np.radians(180))
1.2246467991473532e-16
>>>


可以看到計算,0 ,90還是準確的。

但是計算180,

卻是1.224 e-16



因爲處理器處理的是浮點數,無法精確表示pi的真實值。

使用下列函數確定0與計算結果1.2246467991473532e-16的差距,是不是無限接近。

>>> np.allclose(0,np.sin(np.radians(180)),1e-5,1e-8)
True
>>>






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章