2014-02-11 75 views
-2

我与以下语句的脚本:Python的计算数学表达式不正确

Me = 5.97219E+24 
Ms = 1.9891E+30 
ae = 149597887155 
r = ae*((Me/Ms)**(2/5)) 

运行脚本后,变量r具有相同的值,其149597887155是一样ae。这显然不是我在评估表达式后所期望的值。

我试着重新启动我的电脑,启动一个新的Python解释器,甚至安装另一个Python发行版。每种情况下都是一样的结果。

目前,我使用Python 2.7和Spyder作为编辑器的Anaconda。

奇怪的是,当我直接将语句复制并粘贴到解释器中时,它们被正确评估。

这听起来对任何人都很熟悉吗?这是否有一个已知的原因?

+0

'2/5'为'0'。使用'2.0/5.0'。当你“直接将语句复制并粘贴到解释器中”时,你使用的是python 3吗? – geoffspear

+0

任何数字提升至0次幂== 1,任何数字次数1本身。因此'ae == r' – SethMMorton

回答

1

在Python 2.7中,2/5是一个整数除法,结果为0.任何由0驱动的值都是1,这意味着r的最终结果是ae * 1。

在Python 3.3中,2/5结果为0.4,可能会给出您期望的结果。

关于控制台的区别只有:我没有区别。

+0

非常感谢解释!现在看来非常明显。如果我试图自己发现这件事,它会花费很多年。 – user1984653