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仍然是余数。。但是如果你能告诉我内部代码,那就太好了。无论如何,谢谢。:)应该会给你一些启示。