【问题标题】:Meaning and use of "%" operator in C# [duplicate]C#中“%”运算符的含义和使用[重复]
【发布时间】:2021-03-29 20:37:30
【问题描述】:

我知道这是一个非常基本的问题(我对 C# 比较陌生),但不知何故我在互联网上找不到任何关于它的信息。

我只是想了解“%”运算符的作用,我以前看过一些应用程序并且有一点想法,但不能 100% 确定它到底是做什么的。

例如,这里有一个每 10 帧执行一次的方法(在 Unity 中):

void Update() {
     frames++;
     if (frames % 10 == 0) {
         // method
     }
}

这是显示的游戏时间计算:

// time = incremented by 1 every second

int seconds = (time % 60);
int minutes = (time / 60) % 60;
int hours = (time / 3600) % 24;
// int days = (time / 86400) % 365;

% 运算符在这些示例中的具体作用以及我如何才能最好地理解它。

【问题讨论】:

  • 也许我应该挖得更深一些(只需打开一个解释每个操作员的网站,比如你发给我的链接)。但是,我仍然不太明白“除法后的余数”是什么意思。为什么“5 % 4”的输出为 1?如果你将这两个除以 1.25,那么“余数”是什么?我数学不是最好的(也许是英语??),所以恐怕我有点难以理解:(
  • 不@DavidB,想想看,5 中包含多少次 4? 1 次,余数为 1。因此,在您的第一个示例中,如果 frames 的每个值都是十的精确倍数,则 if 变为 true。
  • 该操作称为“模”(还没有人提到)

标签: c# unity3d operators


【解决方案1】:

与其他 cmets 一样,它代表模数,通过此运算符,您可以得到除法的余数。

const quotient = 11 / 4;
// quotient will be 2;

=> 因为; 4+4+3(11中有两个4)

const remainder = 11 % 4;
//remainder will be 3; 

=> 因为; 4+4+3(两个4后余数为3)

模运算符的另一个实际用途是,您可以确定一个数字是奇数还是偶数,如下所示。

var myNumber = 5;
if (myNumber % 2 == 0) {

 Console.WriteLine("Mynumber is an even number.");

} else {

 Console.WriteLine("Mynumber is an odd number.");

}

【讨论】:

    【解决方案2】:

    % 运算符返回除法的余数。

    在第一个示例中,代码将每 10 帧执行一次,因为 帧数除以 10 的余数将仅每 10 帧为 0。

    在第二个例子中 time 是总秒数,所以如果你这样做 time % 60 你会得到最后一分钟的秒数,因为 minute 有 60秒,所以 time / 60 的余数是最后一分钟的秒数。

    基本上num1 % num2 与地板向下舍入的num1 - (floor(num1 / num2) * num2) 相同。

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 2016-12-11
      • 2016-03-29
      • 2023-03-25
      • 2020-05-26
      • 2012-02-28
      • 2018-02-19
      • 2016-07-25
      • 2021-04-09
      相关资源
      最近更新 更多