找出数字的除法余数


Answers:


205

您正在寻找模运算符:

a % b

例如:

26 % 7

当然,也许他们希望您自己实现它,这也不会太困难。


13
请注意,取模运算符总是返回一个正数,因此对于负数,它可能不是您在谈论余数时所期望的:-10 % 3 == 2。但是a/b*b + a%b == a仍然适用,因为python总是四舍五入为-Infinity,这与某些其他语言不同,后者四舍五入为0但会返回-1。
marcelj 2014年

6
这是因为Python %执行的是真正的模数,该模数返回范围上的值[0, divisor),并与底除法(朝向负无穷大)配对良好。C语言使用%运算符进行余数运算,该运算符返回范围内的值,(-divisor, divisor)并与标准除法(接近零)很好地配对。
亚伦·弗兰克

196

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

>>> 26%7
5

如果需要商和模,则有内置divmod函数:

>>> seconds= 137
>>> minutes, seconds= divmod(seconds, 60)



17

如果要避免取模,还可以结合使用四个基本操作:)

26 - (26 // 7 * 7) = 5

15

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

from math import remainder
print(remainder(26,7))

输出:

-2.0  # not 5

注意,如上所述,这是不一样%

引用文档

数学。余数(x,y)

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

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

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

Issue29962描述了创建新功能的原理。


math.remainder可能无法按照您期望的方式运行python 3.7 >>> math.remainder(-2.99,2)-0.9900000000000002 >>> math.remainder(-3,2)1.0
Dominic Barraclough

4

除法时,请使用%而不是/。这将为您退还剩余款项。所以你的情况

26 % 7 = 5

4

模数是正确的答案,但是如果您手动执行此操作,则应该可以。

num = input("Enter a number: ")
div = input("Enter a divisor: ")

while num >= div:
    num -= div
print num

5
仅当num> = 0且dif> 0时有效。
12431234123412341234123

4

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

26%7 = 5;

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


3
如果您使用Python 2、26 / 7 = 3,则对于Python 3,26 / 7约为3.7142857142857144
Antti A


0

如果您想要除法问题的余数,只需使用实际的余数规则,就像在数学中一样。授予它不会给您十进制输出。

valone = 8
valtwo = 3
x = valone / valtwo
r = valone - (valtwo * x)
print "Answer: %s with a remainder of %s" % (x, r)

如果要使用计算器格式,只需将替换valone = 8 为即可valone = int(input("Value One"))。对进行相同的操作valtwo = 3,但显然不同。


您必须转换valone/valtwo为int。否则将导致浮点数。
阿里·耶尔马兹

-1

您可以定义一个函数并使用2个值来调用余数,例如rem(number1,number2),该函数返回number1%number2,然后创建一阵子并将其设置为true,然后为函数保留两个输出,分别输入数字1和2,然后打印出(rem (数字1,数字2)


1
请添加一个工作示例。解释一些理论代码可能很难理解。
mischva11
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.