【Python】除法舍入问题
【Python】除法舍入问题
Python的整数除法
Python有两种除法运算符:
- 普通除法(
/)返回浮点数。例如,5 / 2是2.5,-5 / 2是-2.5。 - 整数除法(
//)只保留整数部分,向下取整。例如,5 // 2是2,-5 // 2是-3。
余数(%)的符号与除数相同。
另外,Python有两种取整函数:
int()是向零取整。例如,int(2.5)是2,int(-2.5)是-2。math.floor()是向下取整。例如,floor(2.5)是2,floor(-2.5)是-3。
以下等式恒成立:
1
2
x//y == floor(x/y)
x == (x//y) * y + x%y
例如:
| x | y | x/y | x//y 和 floor(x/y) | int(x/y) | x%y |
|---|---|---|---|---|---|
| 5 | 2 | 2.5 | 2 | 2 | 1 |
| -5 | 2 | -2.5 | -3 | -2 | 1 |
| 5 | -2 | -2.5 | -3 | -2 | -1 |
| -5 | -2 | 2.5 | 2 | 2 | -1 |
其他语言的整数除法
在C++、Java和Go中,整数运算符/是向零取整的整数除法,余数的符号与被除数相同。
以下等式恒成立:
1
x == (x/y) * y + x%y
例如:
| x | y | x/y | x%y |
|---|---|---|---|
| 5 | 2 | 2 | 1 |
| -5 | 2 | -2 | -1 |
| 5 | -2 | -2 | 1 |
| -5 | -2 | 2 | -1 |
This post is licensed under CC BY 4.0 by the author.