Python math.arctan() 错误的结果?
Python math.arctan() wrong result?
我正在使用 python shell 作为计算器,但我不知道为什么它不能处理 -28/96 作为 atan 函数的输入:
我的问题是:
为什么这是错误的?
-28/96
是 -1 in python 2(整数除法是整数的默认值)
把它变成 -28/96.0
你会得到你想要的结果。
(或切换到python 3)
顺便说一句:3.14 是 Pi
的一个非常糟糕的近似值,除非你喜欢卵形圆圈:)
改用math.pi
。
(我刚看到你第一次写的是28.0/96
,没错!你的潜意识已经意识到了这个错误:))
Python 处理正确。 Python将“-28/96”解释为int除以int,所以return是“-28/96”的前一个最大整数,即-1。您需要的是“-28.0/96”,然后 python 2.7 会将表达式解释为浮点除法并按您的意愿处理。
此外,相同的表达式将 return 一个双精度浮点数 python 3,即 "-0.2916666666666667"。
查看-28/96
的结果:
>>> -28/92
-1
>>> math.atan(-1)
-0.7853981633974483
所以python对整数使用整数除法,而不是浮点数除法。
>>> math.atan(-28.7/96)
-0.2905008632137447
给出正确的结果
我正在使用 python shell 作为计算器,但我不知道为什么它不能处理 -28/96 作为 atan 函数的输入:
我的问题是: 为什么这是错误的?
-28/96
是 -1 in python 2(整数除法是整数的默认值)
把它变成 -28/96.0
你会得到你想要的结果。
(或切换到python 3)
顺便说一句:3.14 是 Pi
的一个非常糟糕的近似值,除非你喜欢卵形圆圈:)
改用math.pi
。
(我刚看到你第一次写的是28.0/96
,没错!你的潜意识已经意识到了这个错误:))
Python 处理正确。 Python将“-28/96”解释为int除以int,所以return是“-28/96”的前一个最大整数,即-1。您需要的是“-28.0/96”,然后 python 2.7 会将表达式解释为浮点除法并按您的意愿处理。
此外,相同的表达式将 return 一个双精度浮点数 python 3,即 "-0.2916666666666667"。
查看-28/96
的结果:
>>> -28/92
-1
>>> math.atan(-1)
-0.7853981633974483
所以python对整数使用整数除法,而不是浮点数除法。
>>> math.atan(-28.7/96)
-0.2905008632137447
给出正确的结果