67

我搞乱了python中的模运算,我知道它会吐出剩余的部分。

但是如果第一个数字小于第二个呢?

例如

2 % 5 答案是 2。

这是如何运作的?

2/5 = .4

4

18 回答 18

53

这有帮助吗

22  % 5 = 2 
17  % 5 = 2 
12  % 5 = 2 
7   % 5 = 2 
2   % 5 = 2

也许这

22 / 5 = 4 + 2/5
17 / 5 = 3 + 2/5
12 / 5 = 2 + 2/5
7  / 5 = 1 + 2/5
2  / 5 = 0 + 2/5
于 2009-10-08T04:49:11.190 回答
39

5 进入 2 零次。

5*0 = 0

2-0 = 2。

答案是2。

于 2009-10-08T04:40:45.537 回答
24

2 除以 5(整数除法)为 0,余数为 2。

于 2009-10-08T04:45:12.827 回答
15

2 = 0 x 5 + 2

于 2009-10-08T04:55:09.787 回答
13

当第一个数字较小时,计算模的结果真的非常容易。结果总是等于第一个(较小的)数字

3 % 5 = 3
5 % 10 = 5
78 % 112 = 78

自己试试吧。

于 2013-06-14T22:06:58.280 回答
12

如果第一个数字更小,那么答案就是第一个数字。

因为第二个数字更大,它“进入”第一个数字零次,余数是第一个数字的全部。

编辑:重新访问这个线程,我必须记住这个运算符的用途。我在这里提到了另一个线程:

识别何时使用模运算符

于 2018-11-15T15:34:15.597 回答
10

例如 2 % 5 答案是 2。它是如何工作的?2/5 = .4!

取模本质上会产生整数结果,而除法可以是整数或浮点运算。您观察到 2/5 等于 0.4 表明您正在考虑浮点数。在这种情况下,0.4 本身就是余数,表达方式不同。“0.4”的整数部分是“0”,余数部分是“.4”。整数除法运算的余数与浮点运算的小数(或“小数”,通俗地说)部分完全相同,只是表达方式不同。

您示例的小数部分 0.4 可以表示为 0.4 或 2/5(五分之二);无论哪种方式都是一样的。注意写成 2/5 时,小数部分的分母(除数)与原题的分母(除数)相同,而小数部分的分子(除数)就是所谓的整数除法中的“余数”。不管你怎么看,商的小数部分余数代表的是同一件事(被除数不能被除数整除的部分),只是表达方式不同。

于 2012-03-02T16:43:24.890 回答
5

您可以将其视为 2 / 5 = 0,余数为 2 of 5。

于 2009-10-08T04:40:53.053 回答
2

a % b = a 如果 a << b

于 2009-10-08T04:42:50.337 回答
2

余数中的分子是你的模答案,不管分子是大于还是小于分母。

12 % 5 = 2 , because 12 / 5 = 2 and **2**/5

9 % 2 = 1 , because 9 / 2 = 4 and **1**/2

这可能更有意义。

5 % 89 = 5 , because 5 / 89 = 0 and **5**/89

5 % 365 = 5 , because 5 / 365 = 0 and **5**/365

5 % 6 = 5 , because 5 / 6 = 0 and **5**/6
于 2015-02-02T03:25:10.920 回答
2

另外需要注意的是,如果第一个数字 (a) 是负数,则答案始终是第二个数字与第一个数字 (na) 的差。

示例:a % n

  1. -5 % 7 = 2 ---> 7 - 5 = 2
  2. 4 % -9 = -5 ---> 9 - 4 = -5(跟随较大数字的符号)

如果两个数字都是负数,则答案将始终是负数,等于较小的数字。

  1. -5 % -7 = -5
  2. -4 % -9 = -4
于 2017-07-24T04:47:35.427 回答
2

作为对我们这些非数学脑的人的跟进,我认为理解这一点的部分问题在于,这个概念通常被简化为“当你将 x 除以 y 时剩下的东西”,当 x 是更小,什么都不是,又名 0。我更失败的证明方式可能是说

  1. y 完全进入 x 多少次?
  2. 取那个数字,乘以 y 以尽可能接近 x
  3. 现在从 x 中减去你从第 2 步得到的值,这就是你的模数。

所以在 2 (as x) % 5 (as y) 中:

  1. 5 完全没有进入 2,所以,0
  2. 0(上述步骤的结果)乘以 5(又名 y)为 0
  3. 2(aka x) - 0(上一步的乘积)是 2
于 2021-03-20T22:00:26.550 回答
1

要了解模算术,我建议你去可汗学院阅读他们关于它的帖子。他们还在同一页面上有互动练习题。这是链接:https ://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/what-is-modular-arithmetic

简而言之:

使用以下等式:

A = BQ + R

A股息

B除数

Q

R余数,是取模的结果。

Q = (A/B)

请记住,Q 总是使用最接近的最小整数。所以如果 Q = 0.2,那么 Q = 0.0。如果 Q = -1.2,则 Q = -2.0。

如果 Q 没有小数,那么你的最终答案是 0 (R = 0)。


对于您的问题:

Q = (2/5) = 0.4,所以 Q = 0。

将其插入“A = BQ + R”:

2 = 5*0 + R

所以,R = 2。


希望这可以帮助。正如我所说,您可以阅读更多关于可汗学院的信息。这是链接:https ://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/what-is-modular-arithmetic

于 2018-07-10T04:20:28.610 回答
1
a%b = a/b=c,
      c*b=d,
      a-d=modulo;

这就是我认为 python 在修改两个数字时所做的事情。较小数字和较大数字之间的模数将始终是较小的数字。

于 2016-02-16T10:11:48.490 回答
1

没有任何数字可以相乘5以使您更接近2.

换句话说x,必须0满足方程:5*x + r = 2

于 2017-01-22T01:09:45.543 回答
1

MOD 不适用于十进制... MOD(A,B) 你想要 A 的结果

于 2017-01-11T05:02:58.650 回答
1

如果 2%5 = 2:在实际数学中,余数为 0,商为 0.4,但在编程中,它看到 2 小于 5 意味着 5*1=5,所以它变低,只需将其除以 0,就变成了less 是 0。因此余数变为 2,因为 2-0=2 ;)

于 2020-11-20T21:18:06.327 回答
-1

模数通过给出除法后的余数来工作,它有用的一件事是
- 查找数字是否为偶数
代码示例:

// 4 % 2 means "2 divided by 2 is what, and what is the remainder? if I have a remainder, return it or else return 0"
if(4 % 2 == 0) {
  alert("2 is even");
} else {
  alert("2 is odd");
}

因此,如果 4 % 2 的余数为 0,则为偶数,否则为奇数。

于 2021-06-04T18:37:05.473 回答