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






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值