为什么Python不正确地评估这个表达式?

Thi*_*nId 6 python math expression operations

我一直在尝试Python的数学能力,我发现了一些有趣的行为.它与以下表达式相关:

(4+4)+3/4/5*35-(3*(5+7))-6+434+5+5+5

>>> 415
Run Code Online (Sandbox Code Playgroud)

但是,如果您在考虑标准操作顺序的情况下评估表达式,则答案应为420.25.我还用WolframAlpha进行了双重检查,得出了420.25的答案.为什么Python会给出不同的答案?它与评估这些表达式的方式有关吗?是否有一些约定呢?任何信息将不胜感激,谢谢!

jte*_*ace 10

你想使用浮点除法.将其更改为有效:

(4+4)+3.0/4/5*35-(3*(5+7))-6+434+5+5+5
Run Code Online (Sandbox Code Playgroud)

整数除法与浮点除法的一些例子:

Python 2.7.2+ (default, Oct  4 2011, 20:06:09) 
>>> 3/4
0
>>> 3.0/4
0.75
>>> 3.0/4.0
0.75
Run Code Online (Sandbox Code Playgroud)

浮点除以整数是浮点运算.Python 3改变了这一点,以便浮点除法是默认值:

Python 3.2.2 (default, Sep  5 2011, 21:17:14) 
>>> 3/4
0.75
Run Code Online (Sandbox Code Playgroud)


Dav*_*ver 7

因为,在Python 2中,/当运算符和操作数都是整数时,使用整数除法.

您可以将其中一个更改为浮动(如其他回答者建议的那样),或使用from __future__ import division:http://www.python.org/dev/peps/pep-0238/