C# 复利计算
我有一个C代码,每年计算复利加本金C# 复利计算,c#,C#,我有一个C代码,每年计算复利加本金 static void CompoundInterest(double principal, double interestRate, double years, double annualCompound) { var total = 0.0; for (int t = 1; t < years + 1; t++) { total = principal * Math.Po
static void CompoundInterest(double principal, double interestRate, double years, double annualCompound)
{
var total = 0.0;
for (int t = 1; t < years + 1; t++)
{
total = principal * Math.Pow((1 + interestRate / annualCompound),
(annualCompound * t));
Console.Write("Your Total for Year {0} "
+ "is {1}. \n", t, total);
}
}
输出是
Your Total for Year 1 is 1051.161897881733.
Your Total for Year 2 is 1104.941335558327.
Your Total for Year 3 is 1161.4722313334678.
我该如何精确地将其舍入?另一个问题是
Math。Pow
使用double
,但在财务计算中,我们需要十进制
。我该如何解决这个问题?在Math.Pow
之后转换为十进制?如果愿意,可以直接将双精度转换为十进制
decimal decimalTotal = (decimal)total;
至于舍入,有一个内置函数Math.Round,它采用多种数字格式。它有一个重载来指定需要多少小数点
decimal roundedDecimal = Math.Round(decimalTotal, 2);
如果您愿意,可以直接将双精度转换为十进制
decimal decimalTotal = (decimal)total;
至于舍入,有一个内置函数Math.Round,它采用多种数字格式。它有一个重载来指定需要多少小数点
decimal roundedDecimal = Math.Round(decimalTotal, 2);
我做了一些测试,先四舍五入,然后转换成十进制,再转换成十进制,最后四舍五入。两人的结果相同 但从逻辑的角度来看,我会先转换而不是在单词后取整。这样,我将更好地控制测试转换的内容和舍入的内容 对于转换,有不同的答案,但我发现所有.net框架和核心都支持这种方法 例如,十进制值=转换为十进制值(双倍值)代码> 然后是你,有人问了你,在这里得到了答案
为了以防万一,参考。我做了一些测试,先四舍五入,然后转换为十进制,再转换为十进制,最后四舍五入。两人的结果相同 但从逻辑的角度来看,我会先转换而不是在单词后取整。这样,我将更好地控制测试转换的内容和舍入的内容 对于转换,有不同的答案,但我发现所有.net框架和核心都支持这种方法 例如,十进制值=转换为十进制值(双倍值)代码> 然后是你,有人问了你,在这里得到了答案
以防万一,请参考。关于双精度到小数点和四舍五入的内容,谢谢。那么,我应该将double转换为decimal,然后只对其进行四舍五入吗?这样做会影响精度吗?关于双精度到小数点和四舍五入,谢谢。那么,我应该将double转换为decimal,然后只对其进行四舍五入吗?这样做会影响精度吗?您还应该了解各种舍入方案的工作原理。例如,银行家取整需要
1,1.5,2,2.5,3,3.5,4
并将其取整为1,2,2,3,4,4
。您还应该了解各种取整方案的工作原理。例如,银行家四舍五入将采用1,1.5,2,2.5,3,3.5,4
并将其四舍五入为1,2,2,3,4,4