Python math.arctan()错误的结果?

时间:2016-11-27 21:11:46

标签: python python-2.7 discrete-mathematics

我使用python shell作为计算器,但我不知道为什么它不能处理-28/96作为atan函数的输入:

math.atan wrong answer

我的问题是: 为什么这是错的?

3 个答案:

答案 0 :(得分:3)

python 2中的

-28/96为-1(整数除法是整数的默认值)

将其转为-28/96.0您将获得所需的结果。

(或切换到python 3)

BTW:3.14是Pi的一个非常差的近似值,除非你喜欢ovoïd圆圈:)

改为使用math.pi

(我刚刚看到你第一次写了28.0/96,这是正确的!你的潜科学家知道这个错误:))

答案 1 :(得分:3)

Python正确处理它。 Python将“-28/96”解释为int divides int,因此它返回最大的前一个整数“-28/96”,即-1。你需要的是“-28.0 / 96”,然后python 2.7会将表达式解释为float division并按照你的意愿处理它。

此外,相同的表达式将在python 3中返回一个双精度浮点数,即“-0.2916666666666667”。

答案 2 :(得分:1)

查看-28/96的结果:

>>> -28/92
-1
>>> math.atan(-1)
-0.7853981633974483

所以python对整数使用整数除法,而不是浮点除法。

>>> math.atan(-28.7/96)
-0.2905008632137447

给出正确的结果