C# 摊销计划,每月本金减少而不是增加

C# 摊销计划,每月本金减少而不是增加,c#,C#,您好,我正在尝试创建一个摊销计划,其中显示了下个月的EMI、本金、利息和新本金。问题是每月本金不是增加而是不断减少。至于搜索网络,我做的是正确的计算。我错过了什么 decimal principal = 312500; decimal rate = 3.50M; decimal EMI; decimal monthlyInterest; decima

您好,我正在尝试创建一个摊销计划,其中显示了下个月的EMI、本金、利息和新本金。问题是每月本金不是增加而是不断减少。至于搜索网络,我做的是正确的计算。我错过了什么

          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),最好附加预期结果(每次迭代),以便更容易确定根本原因。谢谢。您好,我刚刚添加了我的结果和预期结果。还添加了月付款公式