Python中整除(//)和取余(%)问题

前言:Python中的默认整除所采用的是向下取整(round down),这也就导致了在处理负数的整除时会存在一些问题。而取余操作就是建立在整除的基础上的,从而导致这两种计算均存在问题。


整除

默认向下(小)取整

>>> 10//3
3
# 这也就导致了在负数的整除过程中出现问题
>>> 10//-3
-4
# 这是因为真正的结果-3.3333在向下(小)取整时,变成了-4


取余

取余的实现是建立在整除的基础上的

x % y = x − ( ( x / / y ) ∗ y ) x \% y = x-((x//y)*y) x%y=x((x//y)y)

这个公式自己稍微想一下不难得出。但是由于//整除本就在处理负数时存在问题,所以在复数的取余同样存在问题。

>>> 10%3
1
>>> 10%-3
-2
## 这里的-2是因为10//-3=-4,从而10-12=-2

你可能感兴趣的:(Python基础,python)