负数取模不一定是正数
这两天写了个程序,其中有用到取模的操作
一直以来, 我都默认:
-n mod m = (m-n) mod m
也就是: -3 mod 12 = (12-3) mod 12 = 9
不过程序的结果并不是这样, 而是出来一个非常奇怪的结果, 于是分别用微软的计算器和google的计算器算了下:
微软计算器: -3 mod 12 = -3
google计算器: -3 mod 12 = 9
网上查了下,负数取模似乎和编译器有关. 所以, 如果我们的程序中如果有对负数取模时, 应该显示的转换成正数再求,
否则可能得到意想不到的结果.