2013-01-23 97 views
0

我是Java新手,實際上是編程。據我所知,模數運算符(%)返回兩個數字的餘數,但是,我不明白爲什麼17%40 = 17.我知道40%17 = 6和17%5 = 2,而且我知道17%40 = 17。 40%5 = 0。我得到剩餘價值返回的要點。但17%40 = 17讓我難堪。請解釋爲什麼17%40 = 17

我可以設計的唯一合理化是,因爲餘數小於1,所以返回總值17,爲什麼不是0?請幫我解釋一下這個謎。

+1

您是指剩餘小於1的意思是什麼?商數小於1。你有沒有把餘數與商數混淆? –

+0

基本上,這是數學(歐幾里德)整數的劃分。它與計算器爲你做的計算分數不一樣。 17不能被40分(實際上超過17分),所以餘數就是數字本身。因此,如果除數大於股息,模運算符將自己返回數字。(請原諒我的英語數學術語不正確,以不同的語言學習數學;)) – favoretti

+0

嘗試17%18,17%19,17%20 .... 17%100 ... 17%200 .... ... 17%N(其中N> 17),您將得到的答案爲17. – Dhananjay

回答

15

當劃分17/40,商數爲0,其餘 17.

模運算%)返回其餘

a % b = remainder of a/b 
2

Java有一個重要的算術運算符你可能不熟悉,%,也被稱爲模或餘運算符。 %運算符返回兩個數字的餘數。例如10%3 1,因爲10除以3留下的1

所以剩餘你的情況17/40將離開其餘17這樣的結果是17

它像一樣。從Wiki

1%10 = 1 
+0

如果您引用了某些內容,還應該包含鏈接。 – svick

1

等式由是Knuth:

enter image description here

a = 17 
n = 40 
floor(a/n) = 0 
so r = 17 

n > a然後r簡直a

+6

小心。這些方程式可能會讓他的頭部爆炸:-) –

1

我想回到第三和第四標準數學是關鍵。

如果你看到(希望瞭解該部門的語法。它的流行性病3路)

____ 
40)17 

你會得到一個提示17 17不整除40 話,會有的ADITION 」。'然後部分將被添加

+0

請在投票前提出一個理由 – dhpratik

1

如果您有數字一個b,它們的商q和餘[R,那麼下面的必須是真實的:

q·b + - [R = 一個

即是,如果通過除數(b)乘以商(q),並添加剩餘的(- [R),其結果是被除數(一個)。

在你的情況一個 = 17,b = 40,q = 0等- [R必須。

注意:上面的公式只是Nikolay Kuznetsov's answer公式的重新排列,但我認爲這樣更容易理解。

0

也許這是一個不同的,更有幫助的思考方式。

在申請師整數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.

(請注意,在考慮負數時它變得更加複雜。)