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
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MaybeRichard

请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值