您的位置:首页 > 编程语言 > Python开发

为什么python 计算sin (180)!=0

2016-09-27 11:28 169 查看
无论采用第一种方法还是第二种方法

>>> 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

>>>


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python