2010-08-06 51 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 
}