我想知道int id = 5%2;确切地说并且也寻找类似的东西。
原因:
我想用一个数字来计算该项目应该站在哪一行/列。
[实施例]
我有一个5x5的网格。
如果id = 05,它应该在第1行和第5列
如果id = 10,它应该在第2行和第5列
如果id = 12,它应该在第3行和第2列
你如何抓住我的漂移!
(ps:随时可以编辑我的代码。不确定该问题的内容)
答案 0 :(得分:2)
模数(某些C衍生语言中的%
)是当一个数被另一个数除以时剩余的余数。因此38 % 6
为2
(38 / 6
为6
,其余为2
。)
它通常用于你所询问的那种东西。如果您的5x5网格是:
col 1 2 3 4 5
row
1 1 2 3 4 5
2 6 7 8 9 10
3 11 12 13 14 15
4 16 17 18 19 20
5 21 22 23 24 25
然后该行可以计算为(x-1)/5+1
(整数除法而不是浮点数),列可以计算为(x-1)%5+1
:
x (x-1)/5+1 (x-1)%5+1
-- --------- ---------
5 1 5
10 2 5
12 3 2
您最初减去一个然后添加它的原因是因为模数在从零开始的数字上效果最佳,而您的基于一个数字。减法/加法是在执行模数之前将您的方案变为从零开始,然后在之后将其转回到一个基础上。
答案 1 :(得分:1)
%
是Modulus Operator,或者更常见的是余数。因此5%2
会为您提供1
的ID。使用此功能,您可以计算网格中的row
和column
值。例如,
id = 5;
column = (id - 1)%5 + 1;
row = (id - 1)/5 + 1;
- 1
是因为您似乎从1
开始而不是0
。