我是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?請幫我解釋一下這個謎。
我是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?請幫我解釋一下這個謎。
當劃分17/40,商數爲0,其餘是 17.
的模運算(%
)返回其餘。
即
a % b = remainder of a/b
等式由是Knuth:
a = 17
n = 40
floor(a/n) = 0
so r = 17
當n > a
然後r
簡直a
。
小心。這些方程式可能會讓他的頭部爆炸:-) –
我想回到第三和第四標準數學是關鍵。
如果你看到(希望瞭解該部門的語法。它的流行性病3路)
____
40)17
你會得到一個提示17 17不整除40 話,會有的ADITION 」。'然後部分將被添加
請在投票前提出一個理由 – dhpratik
如果您有數字一個和b,它們的商q和餘[R,那麼下面的必須是真實的:
q·b + - [R = 一個
即是,如果通過除數(b)乘以商(q),並添加剩餘的(- [R),其結果是被除數(一個)。
在你的情況一個 = 17,b = 40,q = 0等- [R必須。
注意:上面的公式只是Nikolay Kuznetsov's answer公式的重新排列,但我認爲這樣更容易理解。
也許這是一個不同的,更有幫助的思考方式。
在申請師整數a
和b
,我們確實試圖涉及a
和b
這樣的:
a = Q * b + R
a
是b
有些多,再加上一些吃剩的。 Q
和R
是整數;爲了簡單起見,我們還只是想到非負數。倍數Q
是商數和剩餘數,R
是餘數 - 使關係起作用的最小數。
在大多數語言,a/b
給你Q
,和a % b
給你R
。 (事實上處理器往往在一次同時計算 - 這些都是使相關的。)
所以,如果a
是17和b
是40,它只有在你寫的作品:
17 = 0 * 40 + 17
這就是爲什麼a % b
必須是17.
(請注意,在考慮負數時它變得更加複雜。)
您是指剩餘小於1的意思是什麼?商數小於1。你有沒有把餘數與商數混淆? –
基本上,這是數學(歐幾里德)整數的劃分。它與計算器爲你做的計算分數不一樣。 17不能被40分(實際上超過17分),所以餘數就是數字本身。因此,如果除數大於股息,模運算符將自己返回數字。(請原諒我的英語數學術語不正確,以不同的語言學習數學;)) – favoretti
嘗試17%18,17%19,17%20 .... 17%100 ... 17%200 .... ... 17%N(其中N> 17),您將得到的答案爲17. – Dhananjay