上面的代碼一目了然就不再多少啦,但如果是負(fù)數(shù)取模又該怎么辦呢?
以上a/b=-3是很好理解的,那為什么取模后的值是-1呢?我們先放置一下,看看在python語(yǔ)言中負(fù)數(shù)取模的值
我們可以看到在不同的語(yǔ)言中,取模和取整的結(jié)果竟然是不同的,為什么會(huì)出現(xiàn)這樣的情況呢?很明顯,以上關(guān)于取模的定義并不能滿足語(yǔ)言上取模的運(yùn)算
三.進(jìn)一步的解釋c語(yǔ)言和python語(yǔ)言中取模和除的結(jié)果不同歸根結(jié)底是解釋不同。-10可以等于3乘以-3再減一;也可以等于3乘以-4再加2。
從上可以看出,其實(shí)余數(shù)的大小是取決于商的大小,而商的大小又取決于取整規(guī)則(如果不明白取整的4種方法的可以看看這篇博客 取整規(guī)則)。
在c語(yǔ)言中,默認(rèn)取整方式是零向取整,故-10/3=-3。而在pythen中,默認(rèn)取整方式是地板取整,故-10/3=-4。
而有根具以上取模的定義,很快就能求出余數(shù)的大小
取余:盡可能的讓商,進(jìn)行零向取整
取模:盡可能讓商向負(fù)無(wú)窮方向取整
故在c語(yǔ)言中 % 本質(zhì)其實(shí)是取余(我上文一直說(shuō)取模是為了方便理解),而在python中 % 的本質(zhì)才是取模(我們今后也可以根據(jù)這個(gè)特征來(lái)判斷語(yǔ)言所使用的是取模還是取余)
結(jié)論:本質(zhì)上是不一樣的(盡管它們?cè)诖蟛糠謺r(shí)候是一樣的)
為什么它們兩個(gè)在大多數(shù)情況下又是一樣的呢?
這是因?yàn)槿绻际钦龜?shù)或者負(fù)數(shù)的話無(wú)論是零向取整還是向負(fù)無(wú)窮方向取整,它們的商都是小于它原本的除值,例如 10/3=3.33333,它們?nèi)≌蠖紴?,所以兩者大小是相等的
結(jié)論:參與取余的兩個(gè)數(shù),如果同符號(hào),那么取余等于取模
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧