Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不同结果的摊销计划计算_C#_Algorithm_Math - Fatal编程技术网

C# 不同结果的摊销计划计算

C# 不同结果的摊销计划计算,c#,algorithm,math,C#,Algorithm,Math,我正在尝试构建一个小程序来生成字符串输出,它将告诉我贷款的总偿还金额(每月复利)。我使用两个在线计算器来验证我的工作,但是两者都不同 贷款额:1000 比率:7% 期限:36个月 每月还款:30.78 应偿还总额:1108.04英镑(这与我预计的结果接近) 期望值) 通过以下在线计算器验证上述内容: 然而,在我得到的几乎所有其他在线计算器上: 每月还款:30.88 应偿还总额:1111.53英镑 示例: 此外,在我自己的代码中,我得到了1111.53。所以我有点困惑,到底哪个终值是正

我正在尝试构建一个小程序来生成字符串输出,它将告诉我贷款的总偿还金额(每月复利)。我使用两个在线计算器来验证我的工作,但是两者都不同

  • 贷款额:1000
  • 比率:7%
  • 期限:36个月
  • 每月还款:30.78
  • 应偿还总额:1108.04英镑(这与我预计的结果接近) 期望值)
通过以下在线计算器验证上述内容:

然而,在我得到的几乎所有其他在线计算器上:

  • 每月还款:30.88
  • 应偿还总额:1111.53英镑
示例:

此外,在我自己的代码中,我得到了1111.53。所以我有点困惑,到底哪个终值是正确的。我想更接近1108.04的第一个数值,因为这是我被要求找到的值,但我不确定这里缺少了什么

 public void CompoundCalculator(double lenderRate, double loanPeriodInMonths, double desiredLoanAmount){
        var repaymentAmount = PMT(7, 36, 1000);
        var balance = desiredLoanAmount;
        var totalInterest = 0.00;

        for (var i = 0; i < loanPeriodInMonths;i++)

        {
            var monthlyInterest = Math.Round(balance * ( (lenderRate / 1200) ),2);


            balance -= Math.Round(repaymentAmount - monthlyInterest,2) ;
                totalInterest += monthlyInterest;


        }
       //do something here later with totalInterest variable 

    }

public static double PMT(double yearlyInterestRate, int totalNumberOfMonths, double loanAmount)
    {
        var rate = (double)yearlyInterestRate / 100 / 12;
        var denominator = Math.Pow((1 + rate), totalNumberOfMonths) - 1;
        return (rate + (rate / denominator)) * loanAmount;
    }
public void CompoundCalculator(双倍贷款利率、双倍贷款期限、双倍期望贷款金额){
风险值还款金额=付款金额(7,36,1000);
var余额=期望贷款金额;
var总利息=0.00;
对于(var i=0;i
您的问题是使用了错误的费率:您将月费率设置为yearlyrate/12,而事实上它是(1+yearlyrate)^(1/12)-1(这是将yearlyrate合成12次后得出的费率)

例如,对于7%的利率,月利率为~0.5654%,而不是您计算得出的0.5833%

将您的配方奶粉从(双)年利率/100/12改为

Math.Pow(1+(yearlyInterestRate / 100),1.0/12)-1

应根据我的借款经验(仅限美国)向您提供正确的结果(~30.7789美元/月)

,放款人通常收取的金额越大。他们计算“定期利率”,可以是固定的月利率,也可以基于放贷期的天数。然后,他们在期末计算未偿还本金的利息

如果您使用贷款机构的在线计算器,他们给您的值将是他们向您收取的贷款费用。您可能需要调整代码以获得所需的结果,但如果您从贷款机构借款,您可能会获得更高的付款


我的一位抵押贷款贷款者使用混合月/日利率。当我进行标准付款时,无论何时付款,都会收取整个月的利息。如果我进行额外付款,本金会立即减少,因此我下一个月的利息可能会略高或略低,这取决于我付款的日期ard与他们的计算相匹配。我的所有其他贷款人都使用了/12利率,并通过减少下个月的本金来应用额外付款。

尝试确保你在每个地方都使用双倍。例如,100.0/12.0。例如,计算中使用的每个数字都是float/doubleHi pm100,谢谢你的建议。我为此做了更多调整所有的关键整数都被声明为双精度整数,但不幸的是,这并没有产生任何影响。奇怪的是,第一个计算器关闭了一点。我手动计算了它,得到了与您得到的相同的答案。这是一种猜测,但拥有第一个计算器的公司可能会稍微降低数量,使它们看起来像赌注比他们的竞争对手更激烈。