请解释为什么17%40 = 17
我是Java的新手,实际上是编程。 我知道模数运算符(%)返回两个数的余数,但是,我不明白为什么17%40 = 17。
据我所知,40%17 = 6,17%5 = 2,40%5 = 0.我得到了剩下的返回值的要点。 但是17%40 = 17让我难过。
我可以设计的唯一合理化是,由于余数小于1,所以返回总值17,为什么不是0? 请帮我解释这个谜。
除以17/40时, 商为0, 余数为17。
模运算符 ( %
)返回余数 。
即
a % b = remainder of a / b
Java有一个你可能不熟悉的重要算术运算符%,也称为模数或余数运算符。 %运算符返回两个数字的余数。 例如,10%3是1,因为10除以3留下余数1。
所以在你的情况下,17/ 17/40
将剩余17个,所以结果为17。
和Like一样。
1%10 = 1
来自Wiki的方程式由Knuth提出:
a = 17 n = 40 floor(a/n) = 0 so r = 17
当n > a
r
就是a
。
我想回去学习第3和第4标准数学是关键。
如果你看到(希望理解除法语法。它是流行的第三种方式)
____ 40)17
你会得到一个提示17,因为17不能被40整除。然后会有一个’。’的加法。 然后添加分数
如果您有数字a和b ,它们的商q和余数r ,则必须满足以下条件:
q · b + r = a
也就是说,如果将商( q )乘以除数( b )并加上余数( r ),则结果为被除数( a )。
在你的情况下a = 17, b = 40, q = 0,所以r必须是17 。
注意:上面的等式只是Nikolay Kuznetsov的回答中的等式的重新排列,但我认为这种方式更容易理解。
也许这是一种不同的,更有帮助的思考方式。
当我们将除法应用于整数a
和b
,我们真的试图将a
和b
关联起来:
a = Q * b + R
a
是b
一些倍数,加上一些剩余的。 Q
和R
是整数; 为了保持这个简单,我们也只考虑非负数。 多重Q
是商和剩余的, R
是余数 – 使这种关系起作用的最小值。
在大多数语言中, a / b
给你Q
,而a % b
给你R
(实际上处理器倾向于同时计算两者 – 这些都是如此相关。)
因此,如果a
为17且b
为40,则只有在您编写时才有效:
17 = 0 * 40 + 17
这就是为什么a % b
必须是17。
(请注意,在考虑负数时会变得更复杂。)