首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对负值的模运算--奇怪的事情?

对负值的模运算--奇怪的事情?
EN

Stack Overflow用户
提问于 2008-09-04 13:36:47
回答 8查看 11.6K关注 0票数 18

你能告诉我(-2) % 5多少钱吗?根据我的Python解释器是3,但是你有一个明智的解释吗?

我读到在一些语言中,结果可能是机器相关的,但我不确定。

EN

回答 8

Stack Overflow用户

发布于 2008-09-04 13:41:00

您的Python解释器是正确的。计算模数的一种(愚蠢的)方法是减去或增加模数,直到结果值在0和(模数−1)之间。

例如: 13模5= (13−5)模5= (13−10)模5=3

或者在你的例子中:−2mod5= (−2 + 5) mod5=3

票数 14
EN

Stack Overflow用户

发布于 2008-09-04 13:41:26

对负数进行取模运算的结果似乎依赖于编程语言,下面是清单http://en.wikipedia.org/wiki/Modulo_operation

票数 14
EN

Stack Overflow用户

发布于 2008-09-04 13:41:40

那么,0%5应该是0,对吧?

-1 \f25%5-1\f6应为-1\f25 4-1\f6,因为这是反方向的下一个允许数字(即,它不能为5,因为它超出了范围)。

按照这个逻辑,-2必须是3。

考虑它如何工作的最简单的方法是不断地加或减5,直到数字落在0(包括)和5(不包括)之间。

我不确定机器依赖性-我从来没有见过这样的实现,但我不能说它从来没有完成过。

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

https://stackoverflow.com/questions/43775

复制
相关文章

相似问题

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