【问题标题】:C# modulus operatorC# 模运算符 [关闭]
【发布时间】:2011-03-26 13:12:58
【问题描述】:

我会写程序

int a = 3;
int b = 4;

Console.WriteLine(a % b);

我得到的答案是 3。如何 3 mod 4 = 3???

我无法弄清楚这是如何计算的。

【问题讨论】:

  • 结果是正确的。您期望它返回什么?
  • 你想的是 b%a 而不是 a%b。
  • 我不太确定会发生什么,但我不知道余数是 3。
  • 是取模运算符还是余数运算符?当除数为负时,它们会有所不同。具体来说,两者都在D = dq + r 中计算r,但模数将d 舍入为负无穷,而余数将d 舍入为零。

标签: c# modulus


【解决方案1】:

因为 3 / 4 = 3 的余数。

http://en.wikipedia.org/wiki/Modulo_operator

【讨论】:

  • 这确实很有趣。但是,您可以通过在顶部添加小数点和在被除数上添加更多零来扩展数学问题,以使其最终均匀分布,这将等于 0.75 作为商且没有余数。我不知道 mod 操作员不会那样做,所以我问这个问题。
  • .75 不是商。根据定义,商是一个整数。
  • 只考虑整数,不要考虑小数
  • @Ben, 4 没有均匀地进入3 0.75 次。这就是重点。
  • 我在考虑小数,我不应该这样。谢谢大家的回复,他们对我们很有帮助。
【解决方案2】:

3 mod 4 是 3 除以 4 的余数。

在这种情况下,4 进入 3 零次,余数为 3。

【讨论】:

    【解决方案3】:

    我不太确定会发生什么, 但我不知道如何 余数为 3。

    所以你有 3 个 cookie,你想它们平均分配给 4 个人。

    因为人比 cookie 多,所以没有人得到 cookie (quotient = 0),而您自己有 3 个 cookie 的 余数。 :)

    【讨论】:

    • 这时其他三个人会跳到你身上拿走你的饼干。
    • 这个答案似乎以更适合儿童的方式回答了 OP 的问题。现在连我都明白为什么是3了,谢谢。大声笑
    • @MichaelMadsen 给你留下 0。现在我明白了!
    • 这就是我经常在孩子们之间分配冰淇淋的方式。由于没有足够的东西让每个人都得到一些,所以我得到了剩余的。
    • 太棒了,我喜欢饼干
    【解决方案4】:

    我已经认为用户可能已经理解了答案。因为有这么多优秀的程序员..用简单的措辞%告诉你除以你自己的整数后的提醒。

    例如

    int a = int.Parse(Console.ReadLine());
    int b = a % 2;
    

    现在你输入 13,它会给出 1,因为在简单的数学中将 13 除以 2 余数是 1。希望你明白了。

    【讨论】:

    • 为您的解释干杯
    【解决方案5】:

    正如其他人所解释的,但如果您不想使用“mod”运算符。这是计算“a”除以“n”余数的等式

    a-(n* int(a/n))

    【讨论】:

      【解决方案6】:

      另一个“正如其他人所解释的”,但如果您对更多的取模方法(或使用替代方法)感到好奇,您可以read this article which benchmarks a few different ways

      基本上,最快的方法是老式的模数运算符,类似于:

      if (x % threshold == some_value)
      {
          //do whatever you need to
      }
      

      【讨论】:

        【解决方案7】:

        我发现答案令人困惑和误导.....

        模数是在第一个数字中尽可能多地除以第二个数字后剩下的值。

        1 % 1 = 0 because after dividing 1 into 1, one time, there's nothing left
        2 % 1 = 0 because after dividing 1 into 2, two times, there's nothing left
        1 % 2 = 1 because 2 won't go into 1, so 1 is left
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-09-24
          • 2015-01-07
          • 2017-08-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-27
          相关资源
          最近更新 更多