整数除法 (%) Python 中是不是存在错误?

Posted

技术标签:

【中文标题】整数除法 (%) Python 中是不是存在错误?【英文标题】:Is there a bug in integer division (%) Python?整数除法 (%) Python 中是否存在错误? 【发布时间】:2020-01-07 08:55:12 【问题描述】:

Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32 输入“help”、“copyright”、“credits”或“license”了解更多信息。

7%5 2 8%5 3 6%5 1

【问题讨论】:

这里有什么问题? 7%5 表示“7 除以 5 的欧几里得除法的其余部分是 2” python3 中的整数除法是// 【参考方案1】:

部门/

以整数作为输入,除法会给你一个整数结果(Python2+

>>> 7/5
1
>>> 8/5
1
>>> 10/5
2

输入至少一个非整数 (Python2+),您将得到一个非整数结果。

>>> 10/1.5
6.666666666666667
>>> 10/4.0
2.5

Python3:整数除法为//

>>> 10/4 # Python 3
2.5
>>> 10//4 # Python 3 integer division
2

模 %(= 余数)

模是整数除法的余数

>>> 7%5 # = What is the remainder of the division of 7 by 5
2
>>> 8%5
3
>>> 10%5
0

【讨论】:

/ 在python2中只是整数除法。 这是正确的,马特,相应地更新了答案。【参考方案2】:

您正在使用模运算 7%5 = 2 正确 对于整数除法,您必须使用“//”,例如:7//5。如果您想要结果为浮点数,您可以使用7/5

【讨论】:

以上是关于整数除法 (%) Python 中是不是存在错误?的主要内容,如果未能解决你的问题,请参考以下文章

Python中整数运算除法,输出带浮点数

为啥整数除法产生一个浮点数而不是另一个整数?

Numpy/Python 中基本数学运算的速度:为啥整数除法最慢?

python中整数除法的基本含义是啥?

Python2和Python3中除法操作/的不同

在python中处理长整数除法[重复]