【问题标题】:How to generate and display a sequence (loan exercise)如何生成和显示序列(外借练习)
【发布时间】:2016-01-31 09:17:35
【问题描述】:

我想创建一个序列,其中:

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();

【问题讨论】:

  • 将 a0 的声明移到循环外。就像现在一样,每次循环运行时它都被重新声明为 1100000。

标签: c# sequence


【解决方案1】:

您在循环的每次迭代中声明一个新的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),并且仅在存储时强制转换:

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]);
}

【讨论】:

  • 你先生是我的救星,我非常感激!
猜你喜欢
  • 2012-06-27
  • 1970-01-01
  • 1970-01-01
  • 2019-08-07
  • 2018-01-03
  • 1970-01-01
  • 2018-02-03
  • 1970-01-01
  • 2010-09-29
相关资源
最近更新 更多