通常情況下取模運(yùn)算(mod)和求余(rem)運(yùn)算被混為一談,因?yàn)樵诖蠖鄶?shù)的編程語(yǔ)言里,都用'%'符號(hào)表示取模或者求余運(yùn)算。其為二元運(yùn)算符,具有左結(jié)合性。參與運(yùn)算的量均為整型。取模運(yùn)算的結(jié)果等于兩個(gè)數(shù)相除后的余數(shù)。例如:
5%2=1,1%2=1
5%2.0和5.0%2的結(jié)果是語(yǔ)法錯(cuò)誤
在這里要提醒大家要十分注意當(dāng)前環(huán)境下'%'運(yùn)算符的具體意義,因?yàn)樵谟胸?fù)數(shù)存在的情況下,兩者的結(jié)果是不一樣的。
對(duì)于整型數(shù)a,b來(lái)說(shuō),取模運(yùn)算或者求余運(yùn)算的方法都是:
1.求整數(shù)商:c=a/b;
2.計(jì)算?;蛘哂鄶?shù):r=a-c*b.
求模運(yùn)算和求余運(yùn)算在第一步不同:求余運(yùn)算在取c的值時(shí),向0方向舍入(fix()函數(shù));而取模運(yùn)算在計(jì)算c的值時(shí),向無(wú)窮小方向舍入(floor()函數(shù))。
所謂向0方向舍入,就是以小數(shù)點(diǎn)為界限,直接將小數(shù)部分去掉。如(Int)-1.324=-1(亦叫截?cái)喾?;
而向無(wú)窮小方向舍入,就是最終結(jié)果比真實(shí)值更小。如(Int)-1.324=-2;(int此處是強(qiáng)制轉(zhuǎn)換數(shù)據(jù)類型)
因此當(dāng)a和b
符號(hào)一致時(shí),求模運(yùn)算和求余運(yùn)算所得的c的值一致,因此結(jié)果一致;
符號(hào)不一致時(shí),結(jié)果不一樣。
具體來(lái)說(shuō),求余運(yùn)算結(jié)果的符號(hào)和a一致(截?cái)喾?,求模運(yùn)算結(jié)果的符號(hào)和b一致(更小法)。
在C語(yǔ)言中,%符號(hào)表示的是求余運(yùn)算,在Python腳本中,%表示的是取模。(通常取模運(yùn)算中b不允許是負(fù)數(shù),但是在python2.5.1里可以在%后面跟負(fù)數(shù),因?yàn)閜ython語(yǔ)言中除法的結(jié)果是向0舍入,因此計(jì)算結(jié)果是取模!)
c語(yǔ)言中的除/和模(余數(shù))。
“/”操作數(shù)兩邊為整除,商為整數(shù),如果一邊有操作數(shù)為浮點(diǎn)型,商為浮點(diǎn)型。
“%”余數(shù),操作數(shù)也都是整數(shù),被除數(shù)小于除數(shù),余數(shù)是被除數(shù),余數(shù)符號(hào)也同被除數(shù)。