当第一个数字较小时,模运算如何工作?

76

我正在使用Python进行取模运算,我知道它会返回余数。

但如果第一个数字比第二个小怎么办?

例如

2 % 5 的答案是 2。

这是如何运作的呢?

2/5 = .4


你断言"2/5=.4",但是这是错误的。尝试在REPL中输入"2/5"。 - Chris Martin
8
12 % 5 = 2 的原因是 5 x 2 = 10,而 12 - 10 = 2 - spencer.sm
23
2 % 5 = 2 的原因是 5 x 0 = 0, 而 2 - 0 = 2. - spencer.sm
4
@spencer.sm的解释很好,你应该将其制作成答案。 - MadHatter
@ChrisMartin 只适用于2.x版本。(在您发表评论时,Python 3.3正在积极开发中。) - Karl Knechtel
19个回答

59

这有帮助吗?

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

50

5除以2,商为零。

5乘0等于0

2减0等于2。

答案是2。


28

2除以5(整数除法)的结果是0,余数为2。


18

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

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

亲自尝试一下。


15

2 = 0 x 5 + 2


13
如果第一个数字更小,那么答案就是第一个数字。
因为第二个数字更大,它在第一个数字中的商为零,余数就是整个第一个数字。
编辑:重新查看此线程时,我不得不回想起这个运算符的作用。我参考了这个其他线程:Recognizing when to use the modulus operator

10
例如,对于2 % 5的问题,答案是2。这是如何实现的呢?2/5=0.4! 取模操作本质上会产生一个整数结果,而除法可以是整数或浮点数运算。你观察到2/5等于0.4,表明你在考虑浮点数方面。在这种情况下,“.4”本身就是余数,只是表示方式不同。"0.4"的整数部分是“0”,余数部分是“.4”。整数除法运算的余数正是浮点数运算的小数部分(或者在口语中称为“十进制”部分),它们表示的是完全相同的东西,只是表达方式不同。
你的例子中的小数部分0.4可以表示为0.4或2/5(两分之五);无论哪种方式,它都是相同的。请注意,当它被写成2/5时,小数部分的分母(除数)与原问题的分母(除数)相同,而小数部分的分子(被除数)就是整数除法中所指的“余数”。无论怎样看,商的小数部分和余数表示的是完全相同的东西(“被除数不能被除数整除的部分”),只是表达方式不同。

1
不,.4是商数,在实数除法中没有余数。这段话的其余部分也没有意义,因为它暗示正确的模值是将0.4四舍五入或截断为零。 - user207421
@EJP - 很抱歉我的回答让您感到困惑。在“真实”的除法中,被除数除以除数得到商。商可以用不同的方式表示:它可以表示为单个数量(以各种形式)或表示为整数,该整数代表被除数可以被除数整除的次数,如果有任何无法被除数均匀分配的余额,那就是“余数”。余数正好是商中会落在“小数点”右侧的部分,只是表达方式不同。 - phonetagger
2
第一条评论中的用户错误地提出异议,仅仅因为他们没有理解。这是非常合理的,并且是该运算符背后数学原理的很好解释。将“余数”视为表达除法结果的分数部分的不同方式,对我很有帮助! - smohyee

6
你可以将其看作是2/5=0,余数为2/5。

2
a%b = a/b=c,
      c*b=d,
      a-d=modulo;

这是Python在对两个数取模时的处理方式,或者我认为是这样。较小数和较大数之间的模数始终为较小的那个数。


这是一个新答案吗?与其他答案相比,有什么新信息? - jogo
不看注释就进行评论,后来发现无法删除我的评论。我很抱歉。 - Josh

2

需要注意的一点是,如果第一个数字 (a) 是负数,则答案始终是第二个数字与第一个数字之差 (n-a)。

示例:a % n

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

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

  1. -5 % -7 = -5
  2. -4 % -9 = -4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接