所以我需要将数组值除以数组值。我正在使用浮动多维数组。
以下是代码:
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
我很奇怪第一个值总是被计算出来。如果我尝试划分静态数字并将它们放入我的数组中,它也能正常工作。请帮帮我这个。我是第一次在这里发帖,希望你能在这里提问和帮助...:)
非常感谢,愚蠢的我。 :))
答案 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
。