一般的除法原则:
负数 ÷ 负数 = 正数
正数 ÷ 正数 = 正数
正数 ÷ 负数 = 负数
负数 ÷ 正数 = 负数
总之:同号相除等于正数,异号相除等于负数

| 商 | = | 被除数 | ÷ | 除数 |

一、C/C++、Java

1、整型(int) / 整型(int) = 整型(int)
规则:向零取整(向0方向取最接近精确值的整数,为负向上取整、为正向下取整)
方法:
(1)做一般的除法运算。
(2)根据商的符号来取整。如果商为正,则总的结果为向下取整;如果商为负,则总的结果为向上取整。

例1:36 / (-10) = -3。 解析:36 ÷ (-10) = -3.6。向上取整,结果为 -3。
例2:(-10) / 36 = 0。 解析: (-10) ÷ 36 = -0.27778。向上取整,结果为 0。
例3:(-36) / (-10) = 3。解析:(-36) ÷ (-10)= 3.6。向下取整,结果为 3。

发现:正整数 或 负整数依次 除以 正整数10,结果是依次去掉个位组成的数
-387 / 10 = -38
-38 / 10 = -3
-3 / 10 =0

2、浮点型(float) / 整型(int) = 浮点型(float),只要有一个为float或double型,结果也为float或double型

类型转换规则:
低精度 向 高精度转换(自动转换)
高精度 向 低精度转换(强制转换)

例:
(-36) / (-5.0) = 7.2 // double型
(-36) / (-2.2) = 16.3636 // double型

3、整型(int) % 整型(int) = 整型(int) ————求余
规则:(1) | 小 | % | 大 | = | 小 |,符号同前; (2) | 大 | % | 小 | = | 余 |,符号同前;(|n|指n的绝对值,求余时参照该公式:余数 = 被除数 - 整除得到的商 * 除数———— (a) % (b) = (a) - (a / b)* (b))

方法:
(1)将两个数看作正整数,做一般的求余运算
(2)在得到余数前面加上与被除数相同的符号

例1:(-36) % (-10) = -6。解析:| -36 | % | -10 | = 36 % 10 = 3…6。因被除数符号为负,故总体结果为 -6。
例2:(-36) % 10 = -6。解析:| -36 | % | 10 | = 36 % 10 = 3…6。因被除数符号为负,故总体结果为 -6。
例3:36 % (-10) = 6。解析:| 36 | % | -10 | = 36 % 10 = 3…6。因被除数符号为正,故总体结果为 6。
例4:36 % 10 = 6。解析:| 36 | % | 10 | = 36 % 10 = 3…6。因被除数符号为正,故总体结果为 6。

二、python

1、整型(int) // 整型(int) = 整型(int)
规则:向负无穷方向舍入(向负无穷方向取最接近精确值的整数,即:一直都是向下取整)
方法:
(1)做一般的除法运算。
(2)总的结果为向下取整。

例1:36 // (-10) = -4。解析:36 ÷ (-10) = -3.6。向下取整,结果为 -4。
例2:(-10) // 36 = -1。解析: (-10) ÷ 36 = -0.27778。向下取整,结果为 -1。
例3:(-36) // (-10) = 3。解析:(-36) ÷ (-10)= 3.6。向下取整,结果为 3。

2、数1 / 数2 = 浮点型(float)
例:
(-36) / (-5.0) = 7.2 // float型
36 / (-2) = -18.0 // float型

3、浮点型(float) // 整型(int) = 浮点型(float),只要有一个为float型,结果也为float型
方法:
(1)做一般的除法运算。
(2)向下取整,再添加小数位.0。

例:
36.2 // (-10) = -4.0。解析:36.2 ÷ (-10)= - 3.62。向下取整并添加小数位.0,结果为 -4.0
36 // (-10.0) = -4.0 。解析:36 ÷ (-10.0)= - 3.6。向下取整并添加小数位.0,结果为 -4.0

4、整型(int) % 整型(int) = 整型(int) ————求模
规则:余数 = 被除数 - 整除得到的商 * 除数———— (a) % (b) = (a) - (a // b)* (b)

方法:
(1)先将两个整数看作是正数,再作一般的除法运算:
1、能整除时,其值为 0
2、不能整除时,其值=除数×(整商+1)-被除数
(2)取与除数相同的符号

例1:(-36) % (-10) = -6。解析:-36 // -10 = 3,-36 % -10 = -36 - 3 * ( -10 ) = -6。
例2:(-36) % 10 = 4。解析:36 // 10 = 3,10*(3+1)- 36 = 4。因除数符号为正,故总体结果为 4。
例3:36 % (-10) = -4。解析:36 // 10 = 3,10*(3+1)- 36 = 4。因除数符号为负,故总体结果为 -4。
例4:36 % 10 = 6。解析:36 % 10 = 3…6。故总体结果为 6。

补:divmod() 函数有2个参数,第一个为除数,第二个为被除数。返回结果也有两个参数,第一个为商,第二个为余数(取模运算得到的)。如 divmod(-36,10) 的结果为 (-4, 4)

取余与取模结论:对于两个数为同号时,取模与取余结果一样。主要区别在于对两个异号的数的处理。
python中的求模%运算作用于两个数(不一定是整型);而C/C++、Java的求余%运算作用于两个整数。