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

Hic*_*ick 0 python

当我1/2使用Python时为什么它会给我零?即使我强迫它float(1/2)仍然是零.为什么?我怎么能绕过它呢?

当我给arctan(1/2)我得到0作为答案,但当我给arctan(.5)我得到正确的答案!

Aut*_*tic 7

因为Python 2.x对整数使用整数除法,所以:

1/2 == 0
Run Code Online (Sandbox Code Playgroud)

评估为True.

你想做:

1.0/2
Run Code Online (Sandbox Code Playgroud)

或做一个

from __future__ import division
Run Code Online (Sandbox Code Playgroud)


S.L*_*ott 6

首先, 1/2是整数除法.直到Python 3.0.

>>> 1/2
0
>>> 1.0/2.0
0.5
>>> 
Run Code Online (Sandbox Code Playgroud)

第二,math.atan2用于此类事情.

>>> math.atan2(1,2)
0.46364760900080609
>>> math.atan(.5)
0.46364760900080609
Run Code Online (Sandbox Code Playgroud)