C#控制台程序返回码0但不输出复利计算结果的原因是什么?
问题原因及修复方案
无输出结果的直接原因
你调用Console.WriteLine()方法时使用了复合格式化的传参方式,但输出的字符串模板中没有对应参数的占位符:
原错误代码:
Console.WriteLine("The future value of your investment is:", Convert.ToString(futureCapital));
上述代码中,第一个字符串参数里没有{0}占位符来匹配第二个参数的内容,所以计算得到的终值不会被插入到输出内容里,自然看不到结果。
修复方案二选一即可:
// 方案1:补全占位符 Console.WriteLine("最终投资终值为:{0}", futureCapital); // 方案2:使用C# 6及以上支持的字符串插值,可读性更高 Console.WriteLine($"最终投资终值为:{futureCapital}");
注:不需要手动调用Convert.ToString()做类型转换,Console.WriteLine()会自动处理数值到字符串的转换
隐藏的逻辑错误:复利公式参数顺序错误
标准复利终值计算公式为:终值 = 本金 * (1 + 年利率/年复利次数) ^ (年复利次数 * 投资年限),对应C#中Math.Pow(底数, 指数)的语法,你的代码把底数和指数的顺序写反了,就算输出了内容,计算结果也完全不符合预期。
原错误代码:
double nt = Math.Pow((compoundNumber * investmentPeriod),(1+interestRate / compoundNumber )); double futureCapital = investment * nt;
修复后代码:
// 底数 = 1 + 年利率/年复利次数 double baseNum = 1 + interestRate / compoundNumber; // 指数 = 年复利次数 * 投资年限 double powerNum = compoundNumber * investmentPeriod; double futureCapital = investment * Math.Pow(baseNum, powerNum);
内容的提问来源于stack exchange,提问作者Rell
相关产品推荐
相关产品推荐

