将Array值除以Array值

时间:2010-09-23 13:19:02

标签: c# .net

所以我需要将数组值除以数组值。我正在使用浮动多维数组。

以下是代码:

myNumbers = new float[3, 4];
float[] tempNumbers;

myNumbers[0, 0] = 3;
myNumbers[0, 1] = -6;
myNumbers[0, 2] = 3;
myNumbers[0, 3] = -12;

/*
for (int i = 0; i < 4; i++)
{
    myNumbers[0, i] = myNumbers[0, i] / myNumbers[0, 0];
}
*/

myNumbers[0, 0] = myNumbers[0, 0] / myNumbers[0, 0]; //Works (strange)
myNumbers[0, 1] = -6 / 3; // Works like this
myNumbers[0, 2] = myNumbers[0, 2] / myNumbers[0, 0]; //Does not
myNumbers[0, 3] = myNumbers[0, 3] / myNumbers[0, 0]; //Does not

输出:

1   // Worked
-2  // Worked
3   // Not so much
-12 // Not so much

我很奇怪第一个值总是被计算出来。如果我尝试划分静态数字并将它们放入我的数组中,它也能正常工作。请帮帮我这个。我是第一次在这里发帖,希望你能在这里提问和帮助...:)

非常感谢,愚蠢的我。 :))

3 个答案:

答案 0 :(得分:3)

因为你已经更新了第一个数组值,所以它总是1,所以没有使用它的进一步除法会改变数字的值myNumbers [0,2],myNumbers [0,3]

答案 1 :(得分:1)

不,这很有道理 - 当你在第三和第四行使用myNumbers[0, 0]时,该值为1(由于第一次计算)。

将数组从图片中删除可能会有所帮助,因为它们在这里无关紧要。您的代码是有效的:

float a = 3;
float b = -6;
float c = 3;
float d = -12;

a = a / a;
b = -6 / 3;
c = c / a;
d = d / a;

在第一行之后,a显然为1.如果您不希望早期计算影响以后的计算,请使用单独的变量:

float a2 = a / a;
float b2 = -6 / 3;
float c2 = c / a;
float d2 = d / a;

此时,c2将为1,d2将为-4,这可能是您所期待的。

答案 2 :(得分:0)

执行此行时:

myNumbers[0, 0] = myNumbers[0, 0] / myNumbers[0, 0]; //Works (strange)

结果存储在myNumbers[0,0]。所以当程序执行第三行时:

myNumbers[0, 2] = myNumbers[0, 2] / myNumbers[0, 0]; //Does not

myNumbers[0,0]的值为1,生成了正确的结果3