C# 摊销计划,每月本金减少而不是增加
您好,我正在尝试创建一个摊销计划,其中显示了下个月的EMI、本金、利息和新本金。问题是每月本金不是增加而是不断减少。至于搜索网络,我做的是正确的计算。我错过了什么C# 摊销计划,每月本金减少而不是增加,c#,C#,您好,我正在尝试创建一个摊销计划,其中显示了下个月的EMI、本金、利息和新本金。问题是每月本金不是增加而是不断减少。至于搜索网络,我做的是正确的计算。我错过了什么 decimal principal = 312500; decimal rate = 3.50M; decimal EMI; decimal monthlyInterest; decima
decimal principal = 312500;
decimal rate = 3.50M;
decimal EMI;
decimal monthlyInterest;
decimal monthlyPrincipal;
decimal newPrincipalBalance;
decimal downPayment = 62500;
decimal actualPrincipal = principal - downPayment;
for (int i = 0; i <= 24; i++)
{
Console.WriteLine("principal " + actualPrincipal);
EMI = Math.Round(monthlyPayments(actualPrincipal, rate, 30));
Console.WriteLine("EMI " + EMI);
monthlyInterest = actualPrincipal * rate / 12;
monthlyInterest = Math.Round((actualPrincipal * rate / 100) / 12);
Console.WriteLine("monthlyInterest " + monthlyInterest);
monthlyPrincipal = Math.Round(EMI - monthlyInterest);
Console.WriteLine("monthlyPrincipal " + monthlyPrincipal);
newPrincipalBalance = Math.Round(actualPrincipal - monthlyPrincipal);
Console.WriteLine("newPrincipalBalance " + newPrincipalBalance);
Console.WriteLine("===================================");
actualPrincipal = newPrincipalBalance;
}
}
public static decimal monthlyPayments(decimal actualPrincipal, decimal rate, int years)
{
rate = rate / 1200;
years = years * 12;
decimal F = (decimal)Math.Pow((double)(1 + rate), years);
return actualPrincipal * (rate * F) / (F - 1);
}
decimal-principal=312500;
十进制率=3.50M;
十进制EMI;
十进制月利息;
十进制月原则;
十进制新平衡;
十进位首付=62500;
十进制实际本金=本金-首付款;
对于(int i=0;i我发现了我做错了什么。由于EMI在整个贷款期间保持不变,所以它应该保持在循环之外
Console.WriteLine("principal " + actualPrincipal);
EMI = Math.Round(monthlyPayments(actualPrincipal, rate, 30));
Console.WriteLine("EMI " + EMI);
for (int i = 0; i <= 24; i++)
{
monthlyInterest = actualPrincipal * rate / 12;
monthlyInterest = Math.Round((actualPrincipal * rate / 100) / 12);
Console.WriteLine("monthlyInterest " + monthlyInterest);
monthlyPrincipal = Math.Round(EMI - monthlyInterest);
Console.WriteLine("monthlyPrincipal " + monthlyPrincipal);
newPrincipalBalance = Math.Round(actualPrincipal - monthlyPrincipal);
Console.WriteLine("newPrincipalBalance " + newPrincipalBalance);
Console.WriteLine("===================================");
actualPrincipal = newPrincipalBalance;
}
Console.WriteLine(“主体”+实际主体);
EMI=数学整数(每月付款(实际主付,费率,30));
控制台写入线(“EMI”+EMI);
对于(int i=0;i Hi@StillLearning),最好附加预期结果(每次迭代),以便更容易确定根本原因。谢谢。您好,我刚刚添加了我的结果和预期结果。还添加了月付款公式