为了账号安全,请及时绑定邮箱和手机立即绑定

负整数除法令人惊讶的结果

负整数除法令人惊讶的结果

互换的青春 2019-07-30 17:13:06
负整数除法令人惊讶的结果在我的应用程序中,我遇到了以下结果,并对结果感到惊讶:8/-7=-2 (两个整数)。这意味着什么?
查看完整描述

3 回答

?
一只斗牛犬

TA贡献1784条经验 获得超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 - 更改分部操作员


查看完整回答
反对 回复 2019-07-30
?
jeck猫

TA贡献1909条经验 获得超7个赞

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

那是

1/10 = 01/-10 = -1

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

我发现它可以通过先使用float division然后将结果转换为int来完成,例如

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

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

希望它可以帮到你〜


查看完整回答
反对 回复 2019-07-30
?
炎炎设计

TA贡献1808条经验 获得超4个赞

要让python自动将整数除法转换为float,可以使用:

from __future__ import division

现在:

8/-7=-1.1428571428571428

此功能不在标准python 2中,不会破坏依赖于整数除法的现有代码。但是,这是python 3的默认行为


查看完整回答
反对 回复 2019-07-30
  • 3 回答
  • 0 关注
  • 589 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信