有没有办法获得角度的确切正切/余弦/正弦(以弧度为单位)?
math.tan()
//没有给出某些角度的精确值math.sin()
:math.cos()
>>> from math import *
>>> from decimal import Decimal
>>> sin(pi) # should be 0
1.2246467991473532e-16
>>> sin(2*pi) # should be 0
-2.4492935982947064e-16
>>> cos(pi/2) # should be 0
6.123233995736766e-17
>>> cos(3*pi/2) # 0
-1.8369701987210297e-16
>>> tan(pi/2) # invalid; tan(pi/2) is undefined
1.633123935319537e+16
>>> tan(3*pi/2) # also undefined
5443746451065123.0
>>> tan(2*pi) # 0
-2.4492935982947064e-16
>>> tan(pi) # 0
-1.2246467991473532e-16
我尝试使用 Decimal(),但这也无济于事:
>>> tan(Decimal(pi)*2)
-2.4492935982947064e-16
numpy.sin(x)
其他三角函数也有同样的问题。
或者,我总是可以创建一个带有值字典的新函数,例如:
def new_sin(x):
sin_values = {math.pi: 0, 2*math.pi: 0}
return sin_values[x] if x in sin_values.keys() else math.sin(x)
然而,这似乎是一种廉价的绕过它的方法。还有其他方法吗?谢谢!