Java与Python中的‘%’运算符意义一样么?
1. 取余与取模
百度百科对于取模运算做了如下定义:
对于整型数a,b来说,取模运算或者求余运算的方法都是:
1.求 整数商: c = [a/b];
2.计算模或者余数: r = a – c*b.
求模运算和求余运算在第一步不同: 取余运算在取c的值时,向0 方向舍入(fix()函数);而取模运算在计算c的值时,向负无穷方向舍入(floor()函数)。
根据如上定义,有个结论: %
百分号运算符,在Java中是取余运算,而在Python中却是取模运算。
举个 -5 % 2
的例子,
-
求商:
-5/2 = -2.5
-
计算模或余数:
对于取余,
c = fix(-2.5) // -2
r = -5 - (-2)*2
r = -1
对于取模,
c = floor(-2.5) // -3
r = -5 - (-3)*2
r = 1