一个数的模数 - python vs c#

dop*_*ner 2 c# python

让我们进行基本的算术运算 - 模数

我根据不同的语言得到不同的输出.

蟒蛇

>>> -1 % 12
11
Run Code Online (Sandbox Code Playgroud)

C#

var res = -1 % 12;
output: res = -1
Run Code Online (Sandbox Code Playgroud)

为什么我会看到这样的行为?理想情况下,我希望两种情况下的输出都是11.

也有人知道我是否可以在C#中实现这一目标?

Ser*_*rvy 10

问题的前提是不正确的.所述%在C#操作者不取模运算符,它是剩余运算符,而在Python它是一个模数运算符.

正如Eric Lippert描述的那样,所有正数的模数和余数都相同,但它们处理负数的方式不同.

尽管C#和Python都有%运算符,但并不意味着它们都代表模数.

值得注意的是,其他语言(如C++和Java)使用%运算符的余数,而不是模数,这可能导致C#选择使用余数的原因.由于%运营商的意思并不一致,我建议在使用新语言时在语言文档中查找.