【发布时间】:2016-11-23 07:02:55
【问题描述】:
如果我在 Python 中进行一些普通的计算,就会发生一些非常奇怪的事情。如果我在没有括号的情况下进行乘法,它会给出正确的结果,但是如果将一些东西放入括号中,则总乘法将等于零。
对于那些不相信的人(我知道这听起来很奇怪):
>>> print( 1.1*1.15*0.8*171*15625*24*(60/368*0.75)/1000000 )
0.0
>>> print( 1.1*1.15*0.8*171*15625*24*60/368*0.75/1000000 )
7.93546875
这两个乘法的唯一区别是,第一个乘法在60/368*0.75 周围有括号。
这怎么可能,我能做些什么呢?我不知道这怎么可能。
【问题讨论】:
-
这是关于运算符优先级的,通过消除括号,方程将不相等。
-
*和/具有相同的优先级,因此省略括号只会从左到右。 -
但是两个计算是相等的,它怎么会给出这样的差异呢?以及如何防止此类事情发生?我无意中注意到了它
-
他们不相等。
24*60/368与24*(60/368)不同。请注意,/在 Python 2 中是一个截断除法 -
@Felk 你所说的“不一样”是什么意思,我的意思是从数学的角度来看它们应该是相等的
标签: python division multiplication