Python数值计算的关注点

use*_*012 3 python python-2.x

我在python中计算了以下2个值,得到了不同的结果!如果有人能够解释为什么会这样发生,那就太好了.

(111 - (111 + 2*17)*3375)/(-14) 给出34947作为输出.

(111 - (111 + 2*17)*3375)/(14)*-1 给出34948作为输出.

这两个术语在数学上是等价的.

Lev*_*sky 5

这与舍入规则有关.考虑一个更简单的例子:

>>> -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).