负整数除法出乎意料的结果

新手上路,请多包涵

在我的应用程序中,我遇到了以下情况,并对结果感到惊讶:

8/-7=-2 (均为整数)。

这是什么意思?

原文由 Vivek S 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 847
2 个回答

对于实际值,即 8.0/(-7.0) ,结果大致为 -1.143

使用整数除法的结果将向下舍入到更负的值 -2 。 (这也被称为“楼层划分”)

这就是为什么您会得到以下有些令人费解的答案:

 >>> 8/(-7)
-2
>>> 8/7
1

注意: 这在 Python 3 中是“固定的”,其中 8/(-7) 的结果将是 -1.143 。所以如果你没有理由使用 Python 2,你应该升级。 ;)

在 Python 3 中,如果您仍然想要整数除法,可以使用 // 运算符。这将为您提供与 8/(-7) 在 Python 2 中相同的答案。

这是关于该主题的 Python 增强建议: PEP 238 – 更改除法运算符

原文由 Chris Cooper 发布,翻译遵循 CC BY-SA 2.5 许可协议

Python 总是对负数除法和正数除法进行“底除法”。

那是

1/10 = 0
1/-10 = -1

但有时我们需要 1/-10 为 0

我发现可以通过先使用浮点除法然后将结果转换为 int 来完成,例如

int(float(1)/-10) = 0

这对我来说很好,不需要导入未来的部门或升级到 Python 3

希望能帮到你~

原文由 ZH.Jay 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题