39

我可以写程序

int a = 3;
int b = 4;

Console.WriteLine(a % b);

我得到的答案是 3。如何 3 mod 4 = 3 ???

我无法弄清楚这是如何以这种方式计算的。

4

7 回答 7

99

我不太确定会发生什么,但我不知道余数是 3。

所以你有 3 个 cookie,你想把它们平均分配给 4 个人。

因为人比 cookie 多,所以没有人得到 cookie ( quotient = 0),而你自己还有3 个cookie。:)

于 2010-08-06T20:45:57.567 回答
70

因为 3 / 4 的余数 = 3。

http://en.wikipedia.org/wiki/Modulo_operator

于 2010-08-06T20:37:02.203 回答
17

3 mod 4 是 3 除以 4 的余数。

在这种情况下,4 进入 3 零次,余数为 3。

于 2010-08-06T20:37:07.300 回答
5

我发现答案令人困惑和误导......

模数是在将第二个数字尽可能多地除以之后剩下的第一个数字。

1 % 1 = 0 because after dividing 1 into 1, one time, there's nothing left
2 % 1 = 0 because after dividing 1 into 2, two times, there's nothing left
1 % 2 = 1 because 2 won't go into 1, so 1 is left
于 2018-09-18T22:55:03.550 回答
4

我已经认为用户可能已经理解了答案。因为有这么多优秀的程序员..用简单的措辞%告诉你除以你自己的整数后的提醒。

例如

int a = int.Parse(Console.ReadLine());
int b = a % 2;

现在你输入 13,它会给出 1,因为在简单的数学中将 13 除以 2 余数是 1。希望你明白了。

于 2013-02-05T15:11:23.447 回答
2

正如其他人所解释的,但如果您不想使用“mod”运算符。这是计算“a”的余数除以“n”的等式

a-(n* int(a/n))

于 2013-10-11T17:38:26.390 回答
0

另一个“正如其他人所解释的那样”,但如果您对其他几种计算模数的方法(或使用替代方法)感到好奇,您可以阅读这篇文章,它对几种不同的方法进行了基准测试

基本上,最快的方法是老式的模数运算符,类似于:

if (x % threshold == some_value)
{
    //do whatever you need to
}
于 2014-07-11T07:07:26.857 回答