我目前从我的教授那里获得了一项涉及"规则72"的任务。对于那些不了解的人来说,72规则通常用于确定一个数量加倍所需的时间,例如通货膨胀或投资。
现在规则为72,有倍增的时间和实际的倍增时间。根据72规则的倍增时间将分为72,因此它看起来像72 / r。然后是实际的倍增时间。我编写了我的代码来计算循环运行的次数,直到我的值加倍实际的倍增时间。它适用于第一次运行,但随后开始分崩离析,特别是实际的倍增时间。
当利率为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(" "));
}
答案 0 :(得分:2)
在actualyears
循环之前将for
设置为零。这意味着第二次迭代将使用第一次迭代中actualyears
的值作为起始值,而不是零。
在actualyears
循环之前将while
设置为零。
答案 1 :(得分:0)
Guffa正好击中头部。我认为你不小心意味着将“years = 0”称为“actualyears = 0”。而不是相反。很高兴它有效。