我想创建一个序列,其中:
a0 = 1100000
a1 = 1100000 * 1.012 - 25000
a2 = (1100000 * 1.012 - 25000) * 1.012 - 25000
a3 = (1100000 * 1.012 - 25000) * 1.012 - 25000) * 1.012 - 25000
...
问题是,它只计算/显示a1
(1088200),一百次。 (我想将它全部存储在一个名为ms的数组中)
以下是我提出的代码:
double interest = 1.012;
int[] ms = new int[100];
for (int i = 0; i < ms.Length; i++)
{
int a0 = 1100000;
ms[i] = Convert.ToInt32(a0 * interest - 25000);
a0 = ms[i];
Console.WriteLine(ms[i]);
}
Console.ReadLine();
答案 0 :(得分:4)
您在循环的每次迭代中声明一个新的a0
变量,并始终使用值1100000初始化它。如果要在循环内使用上一次迭代的值,则需要声明它在之外的循环:
int a0 = 1100000;
for (int i = 0; i < ms.Length; i++)
{
ms[i] = Convert.ToInt32(a0 * interest - 25000);
a0 = ms[i];
Console.WriteLine(ms[i]);
}
请注意,您在每次迭代时都会失去精确度 - 您可能最好将a0
保留为double
(或decimal
)并且仅在存储时强制转换:< / p>
decimal interest = 1.012m;
decimal current = 1100000;
for (int i = 0; i < ms.Length; i++)
{
current = current * interest - 25000;
ms[i] = (int) current;
Console.WriteLine(ms[i]);
}