我有这个简单的代码行,显示为余数5
:
Console.WriteLine(5 % 8);
%运算符显示第一个数字和第二个数字之后的余数。所以,5 / 8 = 0,625
。不应该提醒上面的代码是6而不是5?我在Visual Studio中测试时为什么会看到5?
答案 0 :(得分:2)
8次“干净地”进入5次?零次。
5 / 8 = 0 (int division)
执行5 ÷ 8
时,遗留了多少项? 5。
5 % 8 = 5 (modulus division)
另一种解释方法是:
你有5个苹果。请将这些苹果分配到8组,但必须确保每组都有相同数量的苹果。你做不到。苹果的数量少于组数。你不能把任何苹果给任何人。
因为你没有给任何苹果,所以你留下了 5个苹果。那是你的余生。
答案 1 :(得分:2)
一切都遵循整数除法的基本规则。对于整数x
和y
,假设我们有:
q = x / y;
r = x % y;
基本规则是:
q
和r
都是整数q * y + r == x
现在您已了解基本规则,您可以计算5 / 8
和5 % 8
的值。
5 / 8
是一个整数。确切的值是0.625
,但这不是整数,因此我们将舍入为零并得到0
。因此q
为0
。
要计算r,我们必须求解q * 8 + r = 5
,这很容易解决:r = 5
是解决方案。
(请注意,有一些关于除以零的基本规则,等等,您通常不必担心。)
答案 2 :(得分:0)
Modulo没有给你第一个商数,但是第二个数之后的余数除以第一个数。
8根本没有进入5,所以剩下的就是5。
有关其他一些好的解释,请参阅此答案:
How does a modulo operation work when the first number is smaller?