Post

【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

例如:

xyx/yx//y 和 floor(x/y)int(x/y)x%y
522.5221
-52-2.5-3-21
5-2-2.5-3-2-1
-5-22.522-1

其他语言的整数除法

在C++、Java和Go中,整数运算符/向零取整的整数除法,余数的符号与被除数相同。

以下等式恒成立:

1
x == (x/y) * y + x%y

例如:

xyx/yx%y
5221
-52-2-1
5-2-21
-5-22-1
This post is licensed under CC BY 4.0 by the author.