有人可以向我解释一下运算符是如何工作的%
:它是什么?该运算符背后的逻辑是什么?它做什么以及它返回什么?
例如,Java 中的以下代码(尽管它可以在具有类似符号的其他语言中工作):
char calculaLetra(int dni)
{
String juegoCaracteres="TRWAGMYFPDXBNJZSQVHLCKE";
int modulo= dni % 23;
char letra = juegoCaracteres.charAt(modulo);
return letra;
}
[ SOes 聊天中提出的问题。]
该运算符
%
称为模运算符。在 C# 中此运算符的文档中可以找到一个很好的简单定义:
例如,假设您正在计算以下除法:
显然,结果是
3.333333....
或换句话说,3
余数为1
。余数是使用模运算符的结果:虽然我并不确切知道不同语言内部是如何执行这个操作符的,但是用这些语言来表达它的等价方式是:
什么时候使用这个操作符有用?
这个运算符有很多用途。
当您有任何整数并且需要将其转换为较小间隔内的整数时,它会很有用。哈希表在内部使用这种技术。例如,从一个正整数开始
n
,您需要返回一个介于1
和之间的整数5
。这可以这样实现:另一个典型的例子是当你想知道一个整数是偶数还是奇数时:
正如您在其他答案中被告知的那样,它返回除法的其余部分。
我想告诉你,这个运算符的一个非常常见的用途是使用 for 循环将数组分成相等的组。一种情况是在其他偶数/奇数答案中已经提到的情况,即两个一组。但这可以扩展到 3、4 组……例如,我们必须制作一副 40 张卡片并初始化它们的所有值。在从 0 到 39 的循环中,除以 i / 4 会给我们这样的系列:0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3... 最多 9。模数 i % 4 给出我们将给出一个这样的系列:0 1 2 3 0 1 2 3 0 1 2 3...这些值允许我们创建卡片(值,花色):
以下是 C# 中的代码示例:
% 运算符返回被除数(运算符左边的那个)和除数(右边的那个)之间除法的余数。
与返回商的 / 运算符的区别
在您的示例中,它将 ID 号除以 23 并为您提供其余部分,直到下一次精确除以 23(例如 24% 23 = 1)。
使用该数字选择与您拥有的字母相对应的
array
字母juegoCaracteres
。运算符
%
是算术运算符,表示除以整数。例如,如果你
10/3
正常除法它是 = 3.33333334,在%
编程的帮助下,你会得到 1 作为除法的答案,为什么?您剩余的 1 与正常除法的结果相反。这个运算符返回的是这个除法的余数!在某些情况下,我们想知道偶数,我们对知道一个数可以被另一个数除多少次不感兴趣,而是知道确切的结果。
因此,如果它是偶数,我们的余数就是
0
,因为没有我们无法处理的余数。在您的特定情况下,您需要知道除法的其余部分才能在字符串中获取字符。
/
使用除法运算符:例如6/4=1
,与运算符不同%
,您得到除法的余数,例如6%4=2
在纸和铅笔上可能不完全正确。仔细看看数学运算,它会给你 0 作为答案。
如果您将其视为分数,则更容易。是
n1
被除数、(n1/n2)
商数和n2
除数。你取消
n2
了,你就离开了驾驶
因此,它不等同于浮动或铅笔和纸张数据类型。模块函数在商中找到整数时发生,在语言的情况下,当它像 sstan 那样被格式化为整数数据类型时,即在除法的那一点,余数被返回。如果包括商的所有有限或无限小数,则模将始终等于 0。
但这是正确的。我理解斯坦和影子。我的模块结果会将商四舍五入为整数值。一个与 sstan 相同或类似的例子是: