负整数除法令人惊讶的结果
- 2025-01-21 09:01:00
- admin 原创
- 114
问题描述:
在我的应用中我遇到了以下情况并对结果感到惊讶:
8/-7=-2
(均为整数)。
这意味着什么?
解决方案 1:
对于实际值,即8.0/(-7.0)
,结果大致为-1.143
。
使用整数除法的结果将被向下舍入为更负的 值-2
。(这也称为“向下取整除法”)
这就是为什么你会得到以下有些令人困惑的答案:
>>> 8/(-7)
-2
>>> 8/7
1
注意:这在 Python 3 中已“修复”,其中的结果8/(-7)
将是-1.143
。因此,如果您没有理由使用 Python 2,则应升级。;)
在 Python 3 中,如果您仍然需要整数除法,则可以使用运算符。这将给出与 Python 2 中//
相同的答案。8/(-7)
以下是关于该主题的 Python 增强提案:PEP 238——更改除法运算符
解决方案 2:
Python 对负数除法和正数除法总是执行“向下取整除法”。
那是
1/10 = 0
1/-10 = -1
但有时我们需要 1/-10 为 0
我发现可以先使用浮点除法然后将结果转换为 int,例如
int(float(1)/-10) = 0
这对我来说很好,不需要导入未来的除法或升级到 Python 3
希望可以帮到你~
解决方案 3:
要让 Python 自动将整数除法转换为浮点数,您可以使用:
from __future__ import division
现在:
8/-7=-1.1428571428571428
该特性不在标准 Python 2 中,以免破坏依赖整数除法的现有代码。
但是,这是 Python 3 的默认行为。
解决方案 4:
当除法时两个值都是整数,Python 使用 Floor 除法。
解决方案 5:
在 Python 中,/
运算符用于整数除法。您可以将其视为浮点除法,然后进行floor
运算。
例如,
8/7 == floor(8.0/7.0) == 1
8/-7 == 地板(8.0/-7.0)== -2
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD