请解释为什么17%40 = 17

时间:2013-01-23 05:42:03

标签: java operators modulus

我是Java的新手,实际上是编程。我知道模数运算符(%)返回两个数字的余数,但是,我不明白为什么17%40 = 17。

据我所知,40%17 = 6,17%5 = 2,40%5 = 0.我得到了剩下的返回值的要点。但是17%40 = 17让我感到难过。

我可以设计的唯一合理化是,由于余数小于1,所以返回总值17,为什么不是0?请帮我解释这个谜。

6 个答案:

答案 0 :(得分:15)

当你除17/40时,为0而余数为17。

模运算符%)返回余数

a % b = remainder of a / b

答案 1 :(得分:2)

  

Java有一个您可能不熟悉的重要算术运算符%,也称为模数或余数运算符。 %运算符返回两个数字的余数。例如,10%3是1,因为10除以3留下余数为1。

所以在你的情况下17/40会留下余数17,所以结果是17。

和Like一样。

1%10 = 1

答案 2 :(得分:1)

Knuth的Wiki公式:

enter image description here

a = 17
n = 40
floor(a/n) = 0
so r = 17

n > a时,r只是a

答案 3 :(得分:1)

我想学习第3和第4标准数学是关键点。

如果你看到(希望理解除法语法。它是流行的第三种方式)

  ____
40)17

你将收到提醒17,因为17不能被40整除。 然后会有一个'。'的加分。然后将添加分数

答案 4 :(得分:1)

如果你有数字 a b ,他们的商 q 和余数 r ,那么以下必须是真的:

q · b + r = a

也就是说,如果将商( q )乘以除数( b )并添加余数( r ),结果是红利( a )。

在您的情况下 a = 17, b = 40, q = 0,因此 r 必须是 17

注意:上面的等式只是Nikolay Kuznetsov's answer中等式的重新排列,但我认为这样更容易理解。

答案 5 :(得分:0)

也许这是一种不同的,更有帮助的思考方式。

当我们将除法应用于整数ab时,我们确实试图将ab关联起来:

a = Q * b + R

ab的倍数,加上一些剩余的。 QR是整数;为了保持这个简单,我们也只考虑非负数。多个Q是商和剩余的R,是余数 - 使这种关系起作用的最小值。

在大多数语言中,a / b为您提供Qa % b为您提供R。 (实际上处理器倾向于同时计算两者 - 这些都是如此相关。)

因此,如果a为17且b为40,则只有在您写下时才有效:

17 = 0 * 40 + 17

这就是a % b必须为17的原因。

(请注意,在考虑负数时会变得更复杂。)