问题的发现
java中的a%b和python中的a%b在a,b符号不同时结果不同:
- java
int a = -11;
int n = 7;
int r = a % n;
System.out.println(r); // 结果是-4
- python
a = -11
n = 7
r = a % n
print(r) # 结果是3
原因
对于整型数a,b来说,取模运算或者求余运算的方法都是:
1.求整数商: c = a/b
2.计算模或者余数: r = a - c*b
求余和取模的区别在第一步,求余c向0方向舍入(-1.571
→
\rightarrow
→-1),取模c向无穷小方向舍入(-1.571
→
\rightarrow
→-2)
因此a,b符号一致时,求余和取模结果一致,符号不同时结果不同
总结
java中的%表示求余,python中的%表示取模