Python负数取模解析:18%-5为何等于-2?

创始人
2024-12-28 18:00:26
0 次浏览
0 评论

python中18%-5为什么等于-2?

Python中计算模的方法:(例如a%b)

先计算a减去b的值,然后向下舍入,然后再乘以b,然后从a中减去它并丢弃它value

所以,整个公式将等于a%b=a-b×floor(a/b)

然后我这样计算:18%-5=18-(-5)×floor(-3.6)=18-20=-2

不同的语言接受模块的规则不同,有的将其删除。
有些方法直接截去小数部分。
这两种方法的结果在正数范围内是相同的,但在负数范围内就会有差异。
因此,在对负数取模之前,请考虑一下您想要获得什么值。

脱模后也可以做一些加工。
我个人的做法是得到后加减模,将结果全部变成正数。

负数究竟是如何取模的?

在编程世界中,负数模运算的规则似乎是一个微妙的游戏。
对于正整数的求模运算,我们很熟悉它的定义:\(a=qd+r\),其中\(0\leqr然而,当涉及到负数时,例如(-7%3),不同的编程语言存在分歧。
C++和Java令人惊讶的输出是-1,而Python和一些计算器则返回2,这无疑引发了广泛的讨论和争议。
在定义2中,我们强调在有理数范围内,\(|r|\)必须小于或等于\(|d|\)。
这是解释负余额复杂性的关键。
例如,7mod(-3)的结果是1还是-2,取决于所使用的特定模数规则。
不同的计算工具在处理负数模时可能会导致计算结果的差异,这无疑给编程实践带来了一些挑战。
在实际操作中,我们发现百度和谷歌计算器都显示7mod(-3)=-2,而Java/C++遵循“大商原则”,即取最大的正整数作为商,而Python/谷歌等遵循“小企业原则”。
对于正整数,所有语言和计算器都有相同的处理结果,例如,(-7)mod(-3)结果为-1。
有趣的是,同符号整数的余数运算没有争议。
目的是确保商尽可能小。
但当涉及负数时,C++和Java的商较大,而Python和Google的商较小。
在实数序列中,如何定义和实现负数的模运算是许多编程语言面临的一个悬而未决的问题。
值得注意的是,尽管实数模的定义和实现因特定语言而异,但这反映了编程灵活性以及技术可重复性和兼容性考虑的结果。
对于开发者来说,理解这些差异并能够根据实际需求选择合适的计算方法是掌握复杂数学概念和编程实践的关键。
在探索编程世界的数学奥秘时,负数取模运算这个看似简单的概念,实际上涉及到丰富的细节和变量,值得我们深入研究和探索。
热门文章
1
JSF架构解析与Java学习资源分享:J... JavaServerFacesJSF体系结构JavaServerFaces(JS...

2
数据结构C语言版深度解析与C语言入门很简... 《数据结构(C语言版)》.严蔚敏吴伟民著.pdf在《数据结构(C语言版)》一书中...

3
C语言字符串常量解析:区别、用途及存储方... 什么是字符串常量字符串常量是C语言中的一种数据类型,它是由一对双引号括起来的字符...

4
C语言printf函数:格式字符串与输出... printf函数中的格式与输出项有什么关系?在C语言中,printf函数中的格式...

5
Excel技巧:计算字符串起始位置与合并... 如何计算字符串在特定文本中的起始位置,怎么计算字符串在特定文本中的起始位置您可以...

6
Python发音全解:掌握正确的发音方法... python怎么读我的很多学习编程的朋友可能都知道Python这个词,但是他们中...

7
字符与字符串:编程中的基础文本类型解析 字符串什么意思字符串是由数字、字母和下划线组成的字符串,表示为s=“a1a2…a...

8
Python编程语言:多领域应用与开发优... Python的作用是什么?Python是一种跨平台计算机编程语言,是ABC语言的...

9
深度解析:C语言编程特点与应用领域 什么叫c语言C语言是一种编程语言。C编程语言应用广泛,具有以下特点和特点:1.语...

10
Java全解析:跨平台编程语言的魅力与多... java是什么Java是一种功能强大的编程语言,被称为“一次编写,随处运行”模型...