23 % -5 = -2
23 % 5 = 3
有人可以向我解释我是如何理解这一点的,因为明天我会参加考试。我想说的是因为-5 * -5 =25
然后是25 -2 = 23
,这就是他们获得23
的方式。这是对的吗?
答案 0 :(得分:5)
在Python中,余数的符号与分母的符号相同(它与C之类的语言不同,它与分子的符号相同< / em>的)。
从数学上讲,如果a, b = divmod(n, d)
,则为a*d + b == n
,我们始终保证您。{/ p>
请注意23//5 == 4
和23//-5 == -5
(Python总是进行分区划分)。因此,正如您所说,我们有4*5 + 3 == 23
和-5*-5 - 2 == 23
。
答案 1 :(得分:0)
让我们把它写成N = kM + R。
我们有23 = -5 *( - 5) - 2,并且23 = 4 * 5 + 3。
答案 2 :(得分:0)
为您的目的查看问题的最简单方法是考虑以下定义:
a mod n = R其中余数R必须满足0 <= R.
因此,对于mod -5算术,0 <= R&lt; -4,即R可以是0,-1,-2,-3,-4中的一个
你可以有效地减去(或添加)n,直到你把R带到上面的范围:
所以
23%5是(23-4 * 5)= 23-20 = 3
但
23%-5是(23 + 5 *( - 5))= 23-25 = -2
答案 3 :(得分:0)
嗯,23%5 = 3,因为4 * 5 = 20,当你将23除以20时,你得到3的剩余部分。你可以把它想象成你可以不用经过的壁橱。
对于23%-5,答案不同于一种编程语言。
对于Python,它是-2,因为它总是返回除数的值,因为5 * 5 = 25,当你在Python中将23除以25时,得到-2的余数(因为它必须是负数,因为它除数是负的)所以我们有25 - 2 = 23。
值得注意的是,正式的数学定义表明b是正整数。
答案 4 :(得分:0)
%使用“模运算”; 与提取分割操作的提示不同。
a - int(a/n) * n
虽然它在某些计算机语言中有时相同。
数学表达式可以在这里找到:http://en.wikipedia.org/wiki/Modulo_operation
很明显,在Python中,“%”操作使用以下表达式:
mod(a, n) = a - n * floor(a / n)
因此,
23%-5 = mod(23,-5)= 23 - (-5)* floor(23 / -5)= 23 - ( - 5)* -5 = -2
和
23%5 = mod(23,5)= 23 - 5 * floor(23/5)= 23 - 5 * 4 = 3
另外,你发现有趣的是
-23%5 = mod(-23,5)=( - 23) - 5 * floor(-23/5)= -23 - 5 *( - 5)= 2
因为floor()动作将整数值朝负无穷大。