在Python中使用math.atan时出错!

0 投票
9 回答
2573 浏览
提问于 2025-04-15 12:14

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

撰写回答