找到数字的除法余数

Bob*_*Bob 139 python integer-division

我怎样才能在Python中找到数字的除法余数?

例如:
如果数字为26且分割数为7,则除数余数为5.
(因为7 + 7 + 7 = 21和26-21 = 5.)

tzo*_*zot 182

可以使用运算符发现除法的其余部分%:

>>> 26%7
5
Run Code Online (Sandbox Code Playgroud)

如果你需要商和模数,那就是内置divmod函数:

>>> seconds= 137
>>> minutes, seconds= divmod(seconds, 60)
Run Code Online (Sandbox Code Playgroud)


Uku*_*kit 181

您正在寻找模运算符:

a % b
Run Code Online (Sandbox Code Playgroud)

例如:

26 % 7
Run Code Online (Sandbox Code Playgroud)

当然,也许他们希望你自己实现它,这也不会太难.

  • 注意模数运算符总是返回一个正数,所以对于负数,它可能不是你在谈论余数时所期望的:`-10%3 == 2`.然而`a/b*b + a%b == a`仍然成立,因为python总是向-Infinity舍入,与其他语言不同,后者向0舍入但返回-1. (13认同)
  • 那是因为Python的'%`执行一个真模数,它返回范围'[0,divisor)`上的值,并与内部除法(朝向负无穷大)很好地配对.C语言使用`%`运算符进行余数运算,它返回范围`(-divisor,divisor)`的值,并与标准除法(朝零)很好地配对. (6认同)

小智 35

26%7(你会得到余额)

26/7(你将获得除数可以是浮动值)

26 // 7(你只得到除数整数值))

  • 是否可以在一行中同时获得两者?`除数,余数 = 26 <运算符号> 7` (4认同)
  • @Guimoute请参阅同一问题中的[此答案](/sf/answers/409371161/)。 (2认同)

aly*_*lys 14

如果你想避免模数,你也可以使用四个基本操作的组合:)

26 - (26 // 7 * 7) = 5
Run Code Online (Sandbox Code Playgroud)


Chr*_*nds 12

从Python 3.7开始,有一个新math.remainder()功能:

from math import remainder
print(remainder(26,7))
Run Code Online (Sandbox Code Playgroud)

引用文档:

数学.余数(x,y)

返回相对于y的IEEE 754样式的x余数.对于有限x和有限非零y,这是差x - n*y,其中n是与商x/y的精确值最接近的整数.如果x/y正好在两个连续整数之间,则最近的偶数整数用于n.余数r =余数(x,y)因此总是满足abs(r)<= 0.5*abs(y).

特殊情况遵循IEEE 754:特别是,对于任何有限x,余数(x,math.inf)是x,而余数(x,0)和余数(math.inf,x)对于任何非NaN x都会引发ValueError.如果余数运算的结果为零,则该零将与x具有相同的符号.

在使用IEEE 754二进制浮点的平台上,此操作的结果始终可以完全表示:不会引入舍入错误.

Issue29962描述了创建新功能的基本原理.

  • math.remainder 可能无法按照您期望的方式工作,例如 python 3.7 &gt;&gt;&gt; math.remainder(-2.99,2) -0.9900000000000002 &gt;&gt;&gt; math.remainder(-3,2) 1.0 (3认同)

Alo*_*yak 7

如果要在一行代码中获得商和余数(更一般的用例),请使用:

quotient, remainder = divmod(dividend, divisor)
#or
divmod(26, 7)
Run Code Online (Sandbox Code Playgroud)


Ben*_*est 5

除法时使用 % 而不是 /。这将为您返还剩余部分。所以在你的情况下

26 % 7 = 5
Run Code Online (Sandbox Code Playgroud)


小智 5

我们可以通过使用模运算符(%)来解决这个问题

26%7=5;

但 26 / 7 = 3 因为它会给出商,但 % 运算符会给出余数。

  • 如果使用 Python 2, 26 / 7 = 3 ,对于 Python 3, 26/7 约为 3.7142857142857144 (4认同)