负数取模问题 (c/c++/python)

不同语言里面,对于整数除法取整的处理方式并不一样:

在C/Java中:采用了 truncate(只取整数部分) 除法

-17 % 10 的结果:mod = (-17) - (-17 / 10) x 10 = (-17) - (-1 x 10) = -7
17 % -10 的结果:mod = 17 - (17 / -10) x (-10) = (17) - (-1 x -10) = 7
-17 % -10 的结果:mod = (-17) - (-17 / -10) x (-10) = (-17) - (1 x -10) = -7
在Python之中:采用的是 floor 除法(python3中 // 表示整除)
-17 % 10 的计算结果如下:r = (-17) - (-17 // 10) x 10 = (-17) - (-2 x 10) = 3
17 % -10 的计算结果如下:r = 17 - (17 // -10) x (-10) = (17) - (-2 x -10) = -3
-17 % -10 的计算结果如下:r = (-17) - (-17 // -10) x (-10) = (-17) - (1 x -10) = -7
 
原文地址:https://www.cnblogs.com/didiaoxiaoguai/p/14830430.html