Java與Python中的『%』運算符意義一樣么?

1. 取余與取模

百度百科對於取模運算做了如下定義:

對於整型數a,b來說,取模運算或者求余運算的方法都是:
1.求 整數商: c = [a/b];
2.計算模或者餘數: r = a – c*b.
求模運算和求余運算在第一步不同: 取余運算在取c的值時,向0 方向舍入(fix()函數);而取模運算在計算c的值時,向負無窮方向舍入(floor()函數)。

根據如上定義,有個結論: %百分號運算符,在Java中是取余運算,而在Python中卻是取模運算。

舉個 -5 % 2的例子,

  1. 求商: -5/2 = -2.5

  2. 計算模或餘數:

對於取余,
c = fix(-2.5) // -2
r = -5 - (-2)*2 
r = -1
  
對於取模,
c = floor(-2.5) // -3
r = -5 - (-3)*2
r = 1

2. 程序驗證