请解释为什么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整除。然后会有一个’。’的加法。 然后添加分数

如果您有数字ab ,它们的商q和余数r ,则必须满足以下条件:

q · b + r = a

也就是说,如果将商( q )乘以除数( b )并加上余数( r ),则结果为被除数( a )。

在你的情况下a = 17, b = 40, q = 0,所以r必须是17

注意:上面的等式只是Nikolay Kuznetsov的回答中的等式的重新排列,但我认为这种方式更容易理解。

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

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

 a = Q * b + R 

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

在大多数语言中, a / b给你Q ,而a % b给你R (实际上处理器倾向于同时计算两者 – 这些都是如此相关。)

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

 17 = 0 * 40 + 17 

这就是为什么a % b必须是17。

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