我在计算中做错了什么?

时间:2015-04-12 23:01:34

标签: c# winforms

我目前从我的教授那里获得了一项涉及"规则72"的任务。对于那些不了解的人来说,72规则通常用于确定一个数量加倍所需的时间,例如通货膨胀或投资。

现在规则为72,有倍增的时间和实际的倍增时间。根据72规则的倍增时间将分为72,因此它看起来像72 / r。然后是实际的倍增时间。我编写了我的代码来计算循环运行的次数,直到我的值加倍实际的倍增时间。它适用于第一次运行,但随后开始分崩离析,特别是实际的倍增时间。

  • 当利率为1.00%时,倍增时间将是 72,实际倍增时间为70。
  • 当利率为2.00%时,倍增时间将是 36,实际倍增时间为36。
  • 当利率为3.00%时,倍增时间将是 24,实际倍增时间为24。

    string intrate = "Interest Rate: ";
    string rule = "Rule of 72 Doubling time: ";
    string atcual = "Actual doubling time: ";
    double rate = 1;
    double rule72=72;
    double actualyears=0;
    double years=0;
    double startamnt = 1;
    
    for (rate=1; rate<21;rate++)
    {
        startamnt = 1;
        years = 0;
         while (startamnt < 2)
        {
            startamnt *= (1 + (rate / 100));
                actualyears+=1;
                //This part is for calculating the actual doubling time.//
        }
         years = rule72 / rate;
    
        lb72.Items.Add(string.Format("{0,-15}{1,-15:p}", intrate, rate / 100));
        lb72.Items.Add(string.Format("{0,-15}{1,-15}", rule, Math.Round(years)));
        lb72.Items.Add(string.Format("{0,-15}{1,-15}", atcual, Math.Round(actualyears)));
        lb72.Items.Add(string.Format(" "));
    
    }
    

2 个答案:

答案 0 :(得分:2)

actualyears循环之前将for设置为零。这意味着第二次迭代将使用第一次迭代中actualyears的值作为起始值,而不是零。

actualyears循环之前将while设置为零。

答案 1 :(得分:0)

Guffa正好击中头部。我认为你不小心意味着将“years = 0”称为“actualyears = 0”。而不是相反。很高兴它有效。