在Python中使用math.atan时出错!
我在Python里输入 1/2
,为什么结果是零呢?即使我用 float(1/2)
强制转换,结果还是零,为什么?我该怎么解决这个问题呢?
当我输入 arctan(1/2)
时,得到的答案是零,但当我输入 arctan(.5)
时,结果就正确了!
9 个回答
3
atan(float(1)/2)
如果你这样做:
atan(float(1/2))
在 Python 2.x 中,但没有:
from __future__ import division
1 除以 2 首先会被计算为 0,然后 0 会被转换成浮点数,接着调用 atan(0.0)。在 Python 3 中,这个情况就不同了,它默认使用浮点数除法,即使是整数也一样。一个简单且通用的解决方案就是我最开始提供的那个。
6
首先,1/2
是整数除法。在 Python 3.0 之前,结果会直接取整。
>>> 1/2
0
>>> 1.0/2.0
0.5
>>>
其次,遇到这种情况时,可以使用 math.atan2
函数。
>>> math.atan2(1,2)
0.46364760900080609
>>> math.atan(.5)
0.46364760900080609
7
因为 Python 2.x 对整数进行的是整数除法,所以:
1/2 == 0
这个结果是 True。
你想要做的是:
1.0/2
或者可以这样做:
from __future__ import division