在C#中,百分号(%)代表取模运算符。

3

很抱歉可能会有重复的问题,% 符号与可搜索性不符。

% 是什么意思?我似乎无法理解这个符号。

例如:

rotation = value % MathHelper.TwoPi;

这是一个具体的实例。

但我发现有些代码更频繁地使用 %。我“想”它被称为模数,但我不确定。

上一篇文章:

有深思熟虑的答案


5
根据Eric Lippert的说法,目前大多数答案都(稍微)有误 - 正确的应该是remainder而不是modulus。 - Damien_The_Unbeliever
感谢大家提供的有用文章链接。 - SimpleRookie
1
可能是什么意思 '%' 运算符的重复问题。 - H H
哦,你发现了一篇之前的帖子!我还没看到过,谢谢你找到它。这个帖子可以在版主空闲时被删除。 - SimpleRookie
7个回答

12

%运算符(C# 参考)

% 运算符计算第一个操作数除以第二个操作数后的余数。所有数字类型都有预定义的余数运算符。



4

这是模运算符。它计算第一个操作数除以第二个操作数后的余数,例如:

  1. 5 % 2 = 1
  2. 6 % 2 = 0
  3. 5 % 3 = 2.

3
不是模数,而是余数。这两者并不是同义词。 - Damien_The_Unbeliever
谢谢,我不知道有这样的区别。 - PVitt

4

在C#中,它表示模数,基本上是余数。

示例:

int remainder = 10 % 3 //remainder is 1

模数和余数是两个不同的概念。Eric Lippert在他的博客中有一篇非常好的文章详细解释了它们之间的区别(http://blogs.msdn.com/b/ericlippert/archive/2011/12/05/what-s-the-difference-remainder-vs-modulus.aspx)。 - Nikolay
如果您查看该文章,它说:“%运算符不是规范的模数运算符,它是余数运算符。”尽管它被称为模数。因此它被称为模数运算符,但实际上它是余数运算符。 - Mathew Thompson
是的,你说得对,我只是想强调这不是规范模数运算符。我已经给你的答案点了赞。 - Nikolay

3

模数和余数是两个不同的概念。Eric Lippert在他的博客中有一篇非常好的文章详细解释了它们之间的区别(http://blogs.msdn.com/b/ericlippert/archive/2011/12/05/what-s-the-difference-remainder-vs-modulus.aspx)。 - Nikolay

3

这是取模运算符。它返回一个整数的余数。

int remainder = 2 % 1; // (remainder variable is assigned to 0) 
int remainder2 = 3 % 2; // (remainder variable is assigned to 1)

模数和余数是两个不同的概念。Eric Lippert在他的博客中有一篇非常好的文章详细解释了它们之间的区别(http://blogs.msdn.com/b/ericlippert/archive/2011/12/05/what-s-the-difference-remainder-vs-modulus.aspx)。 - Nikolay
1
@Nikolay,在MSDN上清楚地说明了%是模数运算符,计算整数的余数,这也是我在我的答案中所写的:http://msdn.microsoft.com/en-us/library/0w4e0fzs(v=vs.80).aspx为什么要投下负分呢?如果您对MSDN所述有任何疑问,您应该向他们提出 :) - Darren
是的,你说得对,我只是想强调这不是规范模数运算符。我已经给你的答案点了赞。 - Nikolay
它明确说明了“在旧文档中”。2010年和VS11文档已经删除了该错误。因此,你最多只能断言“它被命名为……”。 - Damien_The_Unbeliever

3

假设

x / y = z,
x, y, z being integers.

不能保证

z * y = x, because the "/" operator rounds down.

因此,我们必须在方程中添加一个余数:

z * y = x + r.

z * y = x + r
z * (-y) = - (z * y) = -(x + r) = -x - r

这意味着“%”(取余)运算符的结果可能为负数,这也就是说,“%”或余数运算符与模运算不同,因为结果不能保证是规范的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接