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)
因为,在Python 2中,/当运算符和操作数都是整数时,使用整数除法.
您可以将其中一个更改为浮动(如其他回答者建议的那样),或使用from __future__ import division:http://www.python.org/dev/peps/pep-0238/