首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中带负数的模运算

python中带负数的模运算
EN

Stack Overflow用户
提问于 2020-12-08 22:11:26
回答 2查看 253关注 0票数 0

我找到了模块化的定义

mod(a,n) = an *层(a/ n)做一个整数除法,然后再乘以它,就意味着找到小于a的最大数,它可以被n除而没有余数。从a中减去这个值将得到除法的其余部分,并由此得到模块。

它似乎帮助我直观地理解,它适用于a和n都为正的情况,也适用于a为负而b为正的情况。例如:

-10国防部3

-12是小于-10可被3整除的最大数,所以其余的是-10-(-12)=2,这是正确的。

但是当我试着做10个mod-3时,我的答案是不正确的。因为虽然9是小于10的最大数,可被-3整除,但它会给出错误的答案,因为它将计算为10-9=1。

相反,它应该是10 -(-4)*(-3)=10-12=-2。

但12并不是小于a的最大数字。

我理解如何使用python中的公式a= (a/n)(N)+(a%n)来求解答案。但是,是否有一个直观的定义来帮助我理解?

EN

回答 2

Stack Overflow用户

发布于 2020-12-08 22:22:34

Python 3文档给出了恒等式x == (x//y)*y + (x%y),由此可以推断出x%y == x - (x//y)*y//表示“地板除法”;x//y是不大于x/y的最大整数。

对于x=10和y==−3,x/y是−3⅓。楼层( x//y 3⅓)为−4,因此−为−4,然后是10−(−4)*−3= 10−12 =−2。

下面是x%3的一个图表:

下面是x%-3的一个图表:

票数 0
EN

Stack Overflow用户

发布于 2020-12-08 22:50:06

我在这里找到了一个解析器,https://en.wikipedia.org/wiki/Remainder,似乎有两种类型的余数和一种编程语言选择使用哪一种

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65207679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档