在Java編程語言中,除法運算除了可以得到商以外,還可以得到余數(shù)和模。這兩者看起來很相似,但實際上有很大的區(qū)別。
首先,先來看一下求余的運算符——%
。它可以得到兩個操作數(shù)做除法后的余數(shù),比如:
int a = 10 % 3; // 得到的值是1
這里的10是被除數(shù),3是除數(shù),得出的余數(shù)是1。與求商不同的是,求余運算并不關(guān)心兩個數(shù)之間的整除關(guān)系,只要能除得盡就求其余數(shù)。
接著,再看一下求模的運算符——Math.floorMod()
。它與求余類似,但一個重要的區(qū)別是在于對于負(fù)數(shù)的處理方式。在求余運算的情況下,余數(shù)的符號與被除數(shù)相同。而求模則是保證余數(shù)的符號與除數(shù)相同。比如:
int b = 10 % -3; // 得到的值是1 int c = Math.floorMod(10, -3); // 得到的值是-2
在上面的例子中,求余運算10除以-3得到的余數(shù)為1,但當(dāng)使用Math.floorMod()來計算時,則把負(fù)號移至了2上,使得余數(shù)的符號和除數(shù)保持一致。
綜上所述,雖然求余和求模的功能看似相同,但實際上有很大的區(qū)別。程序員在使用時需要根據(jù)實際情況來進(jìn)行選擇。