TL; DR:
int remainder = -1 % 5; //-1
int modulus = -1 modulus 5; //4 How do I do this?
我正在尝试读取数组的调制值。因此,由数组长度调制的索引将是更新的索引。例如:
array = {100, 200, 300, 400, 500}
array[6] = array[6 mod 5] = array[1] = 200
够容易。但是当我的指数为负数时,那就是我遇到麻烦的地方。
array[-1] = array[???] = array[4] = 500
我不知道如何执行-1 mod 5.余数运算符适用于正数,但不适用于负数。
以下是我的示例代码,仅适用于正值:
static void Main(string[] args)
{
int[] myArray = new int[5] { 100, 200, 300, 400, 500 };
int myIndex = myArray.Length - 1;
for (int i = 0; i < 15; i++)
{
myIndex = --myIndex % myArray.Length;
Console.WriteLine("Value: " + myArray[myIndex]);
}
Console.WriteLine("Done");
}
如何获得数字的模数,而不是C#中的余数?
答案 0 :(得分:1)
我认为你想要实现的是:
var newIndex = myIndex % myArray.Length;
if (newIndex < 0)
{
newIndex += myArray.Length;
}
它能做你想做的吗?
我也对你使用&#39;模数&#39;感到困惑。据我所知,模数是绝对值。为了得到它,只需使用
var modulus = Math.Abs(value)