C#模数运算符

时间:2010-08-06 20:35:49

标签: c# modulus

我可以写程序

int a = 3;
int b = 4;

Console.WriteLine(a % b);

我得到的答案是3. 3 mod 4 = 3怎么样???

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

7 个答案:

答案 0 :(得分:52)

  

我不太清楚会发生什么,   但我无法弄清楚如何   余数是3.

所以你有3个cookie,你想在4个人之间划分

因为有更多的人而不是cookie,所以没有人获得一个cookie( = 0)并且你自己有一个3个cookie的余数。 :)

答案 1 :(得分:48)

因为剩下的3/4 = 3。

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

如果你无法弄清楚为什么余数为3,我们这里有一些more serious problems

答案 2 :(得分:16)

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

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

答案 3 :(得分:2)

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

的等式

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

答案 4 :(得分:1)

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

e.g。

int a = int.parse(console.readline());
int b = a % 2;
现在你输入13,它会给1,因为潜水后13比2的余数在简单的数学中是1。希望你能得到它。

答案 5 :(得分:0)

另一个"正如其他人所解释的那样,但如果您对另外几种模数(或使用替代方法)感到好奇,可以read this article which benchmarks a few different ways

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

if (x % threshold == some_value)
{
    //do whatever you need to
}

答案 6 :(得分:0)

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

模数是将第二个数尽可能多地划分后剩下的第一个数。

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