为什么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
>>>






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