C# 当第二个数大于第一个数时,为什么Mod运算符返回第一个数?

C# 当第二个数大于第一个数时,为什么Mod运算符返回第一个数?,c#,modulo,C#,Modulo,我希望我没有提出一个愚蠢的问题,但是,我找不到关于这个结果的任何好的解释: 35%36等于35 但是如果我把这两个数字除以,35/36结果是:0.9722222,其中我假设余数是97 有人能解释一下吗?mod会提醒您使用整数除法。36在35中适合0次,所以 35/36是0,并且有一个35的提示,这是mod的结果。35%36的结果等于35除以36,然后返回余数。因为36正好是35的0倍,所以剩下35的余数 类似地,假设您执行了7%3。在本例中,3变为7两次,剩下1的余数。所以7%3==1 我没

我希望我没有提出一个愚蠢的问题,但是,我找不到关于这个结果的任何好的解释:

35%36
等于
35

但是如果我把这两个数字除以,
35/36
结果是:
0.9722222
,其中我假设余数是
97


有人能解释一下吗?

mod会提醒您使用整数除法。36在35中适合0次,所以
35/36是0,并且有一个35的提示,这是mod的结果。
35%36的结果等于35除以36,然后返回余数。因为36正好是35的0倍,所以剩下35的余数

类似地,假设您执行了
7%3
。在本例中,3变为7两次,剩下1的余数。所以
7%3==1


我没有该操作的源代码,但您可以使用以下小函数来模拟它(我相信这没有内置的功能那么有效):

public static class MyMath
{
    public static int Mod(this int operand1, int operand2)
    {
        while (operand1 >= operand2)
            operand1 -= operand2;

        return operand1;
    }
}
var remainder1 = 7.Mod(3);    // 1
var remainder2 = 35.Mod(36);  // 35
然后这样称呼它:

public static class MyMath
{
    public static int Mod(this int operand1, int operand2)
    {
        while (operand1 >= operand2)
            operand1 -= operand2;

        return operand1;
    }
}
var remainder1 = 7.Mod(3);    // 1
var remainder2 = 35.Mod(36);  // 35
当我们除以13%3时,得到1(余数)

同样地,当我们做35%36时,它将给出第一个数字作为余数,因为股息小于除数

当您
除以35/36时,整数除法将得到0个商。
浮点除法将给出分数值,分数值是余数部分

13/3=4.33333=4*3+(0.333)*3 =(整数商)除法器+余数


那么您的意思是,默认情况下,如果第一个数字小于第二个,那么它将返回第一个数字?你能帮我找到这个的密码吗。我想了解代码是如何完成的。谢谢啊,我明白了。。。由于36与35不匹配,因此35仍然是余数。。但是如果你能告诉我内部代码,那就太好了。无论如何,谢谢。:)应该会给你一些启示。