【问题标题】:Wrong Calculation of Interest,Principal & Balance in C#C#中利息、本金和余额的错误计算
【发布时间】:2015-08-14 16:10:40
【问题描述】:

我正在使用 C# 创建一个摊销过程。但是我遇到了一个问题,为什么我在利息、本金和余额方面得到了错误的答案。

这是我的 C# 摊销屏幕截图。

反正应该是这样的。

这是我的 C# 代码。

double PV = Convert.ToDouble(txt_principal.Text);
double NPER = Convert.ToDouble(txt_nop.Text);
double RATE = Convert.ToDouble(txt_irpp.Text);
double PMT = Convert.ToDouble(txt_payment.Text);

String PMT_string = PMT.ToString("#,###.##");
String RATE_string = RATE.ToString("#,###.##");
String NPER_string = NPER.ToString("#,###.##");
String PV_string = PV.ToString("#,###.##");

int count = 0;
for (count = 0; count < NPER; count++) 
{
    dgv_table.Rows.Add(1);
    int numrows = count + 1;
    dgv_table.Rows[count].Cells[0].Value = numrows;
    dgv_table.Rows[count].Cells[1].Value = PMT_string;
    double interest = PV * RATE / 100;
    double principal = PMT - RATE;
    if (PV < PMT) 
    {
        principal = PV;
        PMT = RATE + principal;
    }
    PV = PV - principal;
    if (PV < 0) 
    {   
        principal = principal + PV;
        RATE = RATE - PV;
        PV = 0;
    }
    dgv_table.Rows[count].Cells[2].Value = interest.ToString("#,###.##");
    dgv_table.Rows[count].Cells[3].Value = principal.ToString("#,###.##");
    dgv_table.Rows[count].Cells[4].Value = PV.ToString("#,###.##");

任何帮助先生。为什么我的利息、本金和余额的价值是错误的?

【问题讨论】:

  • 什么是 NPER,PV。编码标准在哪里?为了钱,使用小数而不是双倍。
  • 支付次数和本金价值先生。
  • 您需要更清楚地描述您的预期行为(从屏幕截图中不清楚您期望如何计算数字;尽管可以做出有根据的猜测,但这样的假设可能不正确) .如果您将变量重命名为有意义的名称而不是缩写,这将有助于读者理解代码的意图。如果您阅读与您对所需行为的描述相关的代码,您可能会发现问题。您的结果与目标相差太远,不能仅由 decimaldouble 引起

标签: c#


【解决方案1】:

我能看到的第一个问题在这一行:

double principal = PMT - RATE;

这是从付款中扣除您的利率以得出本金。这就是为什么在第一行中,您使用14,544.16 而不是11,047.66 作为原则。改为:

double principal = PMT - interest;

编辑:修复上述问题确实修复了所有结果。 (虽然我希望这有帮助,但我仍然投票结束了这个问题:它不太适合 StackOverflow 的格式,因为它不太可能对其他人有用。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 2021-11-08
    • 2023-02-16
    相关资源
    最近更新 更多