我在python中计算了以下2个值,得到了不同的结果!如果有人能够解释为什么会这样发生,那就太好了.
(111 - (111 + 2*17)*3375)/(-14) 给出34947作为输出.
(111 - (111 + 2*17)*3375)/(14)*-1 给出34948作为输出.
这两个术语在数学上是等价的.
这与舍入规则有关.考虑一个更简单的例子:
>>> -3/(-2)
1
>>> -3/2*-1
2
Run Code Online (Sandbox Code Playgroud)
1.5四舍五入下来到1,并-1.5四舍五入下来到-2.在某种程度上是一致的.
普通或长整数除法产生相同类型的整数; 结果是数学除法的结果,"floor"函数应用于结果.
如果你想要Python 2.x中的浮点结果,你需要一个显式转换(或者只是使用浮点文字),或者做from __future__ import division.在Python 3.x中,除法总是产生一个浮点数(ref).