与 % 运算符混淆
Confused with % operator
我有这行简单的代码,它显示为余数 5
:
Console.WriteLine(5 % 8);
% 运算符显示第一个数字和第二个数字相除后的余数。所以,5 / 8 = 0,625
。上面代码的提示不应该是6而不是5吗?为什么我在 Visual Studio 中测试时看到 5?
取模不是给你商的第一个数,而是第二个数除以第一个数后的余数。
8 根本不等于 5,所以余数就是完整的 5。
请参阅此答案以获得其他几个很好的解释:
How does a modulo operation work when the first number is smaller?
8 "cleanly" 变成 5 多少次?零次。
5 / 8 = 0 (int division)
当您5 ÷ 8
时,还剩下多少物品? 5.
5 % 8 = 5 (modulus division)
另一种解释方式是:
你有 5 个苹果。请将这些苹果分给8组,但必须保证每组的苹果数量相等。
你不能那样做。你的苹果少于小组的数量。你不能给任何人任何个苹果。
因为您没有送出任何苹果,所以您还剩下 5 个苹果。那是你剩下的。
一切都遵循整数除法的基本规则。对于整数 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
是解。
(请注意,还有一些关于除以零等的基本规则,您通常不必担心。)
我有这行简单的代码,它显示为余数 5
:
Console.WriteLine(5 % 8);
% 运算符显示第一个数字和第二个数字相除后的余数。所以,5 / 8 = 0,625
。上面代码的提示不应该是6而不是5吗?为什么我在 Visual Studio 中测试时看到 5?
取模不是给你商的第一个数,而是第二个数除以第一个数后的余数。
8 根本不等于 5,所以余数就是完整的 5。
请参阅此答案以获得其他几个很好的解释:
How does a modulo operation work when the first number is smaller?
8 "cleanly" 变成 5 多少次?零次。
5 / 8 = 0 (int division)
当您5 ÷ 8
时,还剩下多少物品? 5.
5 % 8 = 5 (modulus division)
另一种解释方式是:
你有 5 个苹果。请将这些苹果分给8组,但必须保证每组的苹果数量相等。
你不能那样做。你的苹果少于小组的数量。你不能给任何人任何个苹果。
因为您没有送出任何苹果,所以您还剩下 5 个苹果。那是你剩下的。
一切都遵循整数除法的基本规则。对于整数 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
是解。
(请注意,还有一些关于除以零等的基本规则,您通常不必担心。)