2010-08-06 22 views
14

我可以写程序C#模运算

int a = 3; 
int b = 4; 

Console.WriteLine(a % b); 

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

我不明白这是如何得到这样的计算。

+13

的结果是正确的。你期待它返回什么? – 2010-08-06 20:38:02

+0

您正在考虑b%a不是%b。 – 2010-08-06 20:39:51

+1

我不太确定会发生什么,但我无法弄清楚余数是多少。3. – 2010-08-06 20:40:51

回答

42

因为3/4 = 3

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

如果为何余数是3,你不能找出剩余部分,我们已经有了一些more serious problems这里。

+0

的确很滑稽。但是,您可以通过向顶部添加一个小数点并向分配中添加更多零来扩展数学问题,以最终实现均匀分布,这将等于0.75作为商而不剩余。我不知道mod运营商不会这么做,所以我问了这个问题。 – 2010-08-06 20:46:53

+1

.75不是商。根据定义,商是一个整数。 – quantumSoup 2010-08-06 20:50:40

+0

仅考虑整数,不考虑小数 – 2010-08-06 20:52:51

15

3 MOD 4是3时,由4

分在这种情况下,剩余4进入3次零用的3

44

余我不太清楚期待, 但我无法弄清楚 其余如何为3

所以,你有3块饼干,并且要鸿沟他们同样4人之间。

因为有更多的人比饼干,没有人得到一个cookie( = 0),并且你已经有了一个其余3饼干自己。 :)

+29

在这一点上,其他三个人跳你并带走你的cookies。 – 2010-08-06 20:47:35

+4

这个答案似乎以更友善的方式回答了OP的问题。现在,即使我明白为什么它是3,谢谢。大声笑 – 2013-12-17 01:28:54

1

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

例如

int a = int.parse(console.readline()); 
int b = a % 2; 

现在你输入13,它由2余数为1的简单的数学给1,监守跳水13后。希望你明白了。

+0

欢呼你的解释 – 2014-05-23 17:07:33

2

正如别人所解释的,但如果你不想使用“mod”运算符。这里是要弄清楚的“一”除以余数公式“N”

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

0

另一种“为他人解释”,但如果您想了解更多的几种方式做模量(或使用另一种方法),你可以read this article which benchmarks a few different ways

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

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