我对1% 2
的逻辑感到困惑,因为我知道 1/2 0 所以没有其余部分。
答案 0 :(得分:4)
%
返回a / b
的剩余部分:
>>> 1 % 2
1
>>> 1/2
0
>>> 1 - 0
1
此外,模数表达式可表示为:
r = a - nq
其中q为floor(a/n)
。所以:
>>> import math
>>> 1 - 2 * math.floor(1/2)
1.0
答案 1 :(得分:4)
1/2为0,余数为1.%运算符返回该余数。
答案 2 :(得分:3)
%是模运算符。它将左手侧分开右手后返回剩余部分。由于2将零次除以1,其余为1。
通常,如果a和b是正整数,并且a< b,然后是%b == a。
但参数不需要是整数。更多细节可以从python参考文档(http://docs.python.org/2/reference/expressions.html)获得:
%(modulo)运算符从第一个参数除以第二个参数得到余数。数字参数首先转换为通用类型。零右参数会引发ZeroDivisionError异常。参数可以是浮点数,例如,3.14%0.7等于0.34(因为3.14等于4 * 0.7 + 0.34。)模运算符总是产生与第二个操作数(或零)具有相同符号的结果;结果的绝对值严格小于第二个操作数的绝对值[2]。
整数除法和模运算符通过以下标识连接:x ==(x / y)* y +(x%y)。整数除法和模数也与内置函数divmod()连接:divmod(x,y)==(x / y,x%y)。这些身份不适用于浮点数;类似的身份大致保持在x / y被地板(x / y)或地板(x / y) - 1 [3]代替的地方。
答案 3 :(得分:2)
当然还有剩余部分。你能从1中获得多少2?其中0个,剩下1个。
答案 4 :(得分:2)
好的,答案已经发布了6次,只是为了完整性添加了这个,如果有一种方法可以理解模数(%
),那么它将从基数10转换为基数2,1不能除以2,所以我们将它留下(得到1的余数)。您可以将第三列中的二进制数想象成模运算的结果。
例如。 9(基数10)到(基数2)..
2 | 9 | 1
2 | 4 | 0
2 | 2 | 0
2 | 1 | 1
答案 5 :(得分:1)
2 * 0为0 因此余数为1
如果问题是找到m%n
我们找到最小或相等的q,使得n *(某些整数)= q且q <= m 然后我们找到(m-q)哪个是余数..
答案 6 :(得分:1)
%
运营商在做什么:
a % b
等于值c
,例如0 <= c < b
,并且k
存在b * k + c = a
,以便{{1}}。