昨天在與同班學(xué)員的討論中,對(duì)Java中的“%”符號(hào)到底是“求余”還是“取陌谐鳎”產(chǎn)生了疑問寥袭。通過百度發(fā)現(xiàn)這兩種運(yùn)算確實(shí)很像,在概念上有很多重復(fù)部分关霸,而主要區(qū)別在于對(duì)負(fù)整數(shù)進(jìn)行除法運(yùn)算時(shí)操作不同。
下面進(jìn)行舉例說明:
對(duì)整型變量a尝江、b來說英上,求余運(yùn)算和取模運(yùn)算的公式都是:
1.求整數(shù)商:c=a/b炭序;
2.計(jì)算余數(shù)或者模:r=a-c*b苍日。
兩種運(yùn)算在第一步時(shí)就產(chǎn)生了不同的結(jié)果:求余運(yùn)算在取c的值時(shí),向0方向舍入相恃;而取模運(yùn)算在計(jì)算c的值時(shí),向負(fù)無窮方向舍入耕腾。
例如:計(jì)算-9 mod 5
設(shè)a=-9,b=5
1.求整數(shù)商:求余運(yùn)算得c=-1(向0方向舍入)扫俺;取模運(yùn)算得c=-2(向負(fù)無窮方向舍入)固翰。
2.計(jì)算余數(shù)或者模:由于c值不同,求余得r=-4骂际;取模得r=1。
歸納:
a和b符號(hào)相同時(shí)歉铝,求余和取模結(jié)果相同;
a和b符號(hào)不同時(shí)送火,求余結(jié)果的符號(hào)和a相同先匪,取模結(jié)果的符號(hào)和b相同。
另外不同環(huán)境下“%”運(yùn)算符的含義也不同:
1.c/c++呀非、Java為求余
2.Python為取模