在 Java 中,我們經(jīng)常會涉及到 % 和 / 兩個(gè)運(yùn)算符,這兩個(gè)運(yùn)算符雖然在計(jì)算中都是用于計(jì)算余數(shù)的,但是它們還是有一些比較重要的區(qū)別。
% 運(yùn)算符
% 運(yùn)算符是用于計(jì)算余數(shù)的,它的使用方式比較簡單:
int a = 10; int b = 3; int c = a % b; // 計(jì)算 a 除以 b 的余數(shù) System.out.println("a % b = " + c); // 輸出結(jié)果為 1,因?yàn)?10 除以 3 的余數(shù)為 1
其中,% 運(yùn)算符的運(yùn)算規(guī)則是:
如果 a 和 b 都是正數(shù)或者都是負(fù)數(shù),那么 % 運(yùn)算的結(jié)果也為正數(shù)。
如果 a 是正數(shù),而 b 是負(fù)數(shù),那么 % 運(yùn)算的結(jié)果為正數(shù)。
如果 a 是負(fù)數(shù),而 b 是正數(shù),那么 % 運(yùn)算的結(jié)果為負(fù)數(shù)。
如果 a 和 b 中有一個(gè)為 0,那么 % 運(yùn)算的結(jié)果為 NaN。
/ 運(yùn)算符
/ 運(yùn)算符是用于計(jì)算除法的,它的使用方式也非常簡單:
int a = 10; int b = 3; double c = a / (double)b; // 計(jì)算 a 除以 b 的結(jié)果 System.out.println("a / b = " + c); // 輸出結(jié)果為 3.333...
其中,/ 運(yùn)算符的運(yùn)算規(guī)則是:
如果 a 和 b 都是正數(shù)或者都是負(fù)數(shù),那么 / 運(yùn)算的結(jié)果也為正數(shù)。
如果 a 是正數(shù),而 b 是負(fù)數(shù),那么 / 運(yùn)算的結(jié)果為負(fù)數(shù)。
如果 a 是負(fù)數(shù),而 b 是正數(shù),那么 / 運(yùn)算的結(jié)果為負(fù)數(shù)。
如果 a 和 b 中有一個(gè)為 0,那么 / 運(yùn)算的結(jié)果為 Infinity 或 -Infinity。
需要注意的是,為了避免整數(shù)除法產(chǎn)生的誤差,我們通常會將其中一個(gè)數(shù)強(qiáng)制轉(zhuǎn)換為浮點(diǎn)型,例如上面的代碼中,我們將 b 轉(zhuǎn)換為了 double 類型,這樣就能夠得到正確的結(jié)果了。