Java/Python 负数取余的不同
在Java写循环数组时,发现了取余(%)操作和设想的不太一样。
例如,
-1 % 16
在Python中结果为
15
, 而在Java中为
-1
.
作为数组索引,当然是想让取余结果为正数!所以只好加了一行判断。
if (mod < 0) mod += 16;
事后在stack overflow上找到了原因,
The problem here is that in Python the % operator returns the modulus and in Java it returns the remainder. These functions give the same values for positive arguments, but the modulus always returns positive results for negative input, whereas the remainder may give negative results.
简单来说,Python返回的是模数,模数为正数。Java返回的是余数,余数和被除数同号。举个栗子:
int a