1

我写了一个小的 jQuery 兴趣计算器。

  • 它正在计算每月还款的信用额度

现场演示在这里

问题是我的利息计算逻辑完全是错误的。

看一看:

//Get the value - monhtly repayment
var InputedValue = $('form input[name="val1"]').val();

// 12 ,18, 24, 30, 36 - NumberOfMonths
for (var i = 12; i <= 36; i += 12) {

    // j = 20 - Deposit in %
    for (var j = 10; j <= 10; j += 10) {

        // g = 20, 30 - InterestPerYear in %
        for (var g = 10; g <= 10; g += 10) {

            var InScaleOfYear = i / 12;

            // Amount of payment excluding deposit
            var AmountOfPayments = (InputedValue * (i - 1)); // rat bedzie o jedna mniej niz ilosc miesiecy, bo wplata poczatkowa
            // Amount of payment including deposit
            var AmountInTotal = (AmountOfPayments * 100) / (100 - j);

            // Deposit 
            var Deposit = AmountInTotal - AmountOfPayments;

            // Amount of payment in one year 
            var AmountOfPaymentInOneYear = (AmountOfPayments / InScaleOfYear);
            var InterestPerYear = ((AmountOfPaymentInOneYear * g) / 100);

            // Interest in total
            var InterestInTotal = InterestPerYear * InScaleOfYear;

            // Amount of credit
            var AmountOfCredit = (AmountOfPayments + Deposit) - InterestInTotal;

            $('table tbody').append('<tr><td>' 
            + i + '</td><td>' 
            + "at " + j + "% = " + Deposit.toFixed(2) + '</td><td>' 
            + "at " + g + "% = " + InterestPerYear.toFixed(2) + '</td><td>' 
            + "at " + g + "% = " + InterestInTotal.toFixed(2) + '</td><td>' 
            + AmountOfPayments.toFixed(2) + '</td><td>' 
            + AmountInTotal.toFixed(2) + '</td><td>' 
            + AmountOfCredit.toFixed(2) + '</td></tr>');

        }
    }
}

你们中有人在做类似的事情吗?如何计算具有以下信息的利息:

  • 月数/年数 ( i = months)
  • 月供金额 ( $('form input[name="val1"]').val();)
  • 存款金额 ( j = deposit)
  • 利率 ( g = interest rate)

正如你所看到的,循环是针对月/存款/利息的。只需要一些帮助登录计算循环中的兴趣。

4

5 回答 5

3

主要问题是您试图通过使用非微积分方法来解决微积分问题。如果您不知道,微积分是数学的一个分支,主要用于解决 X/0 问题。在复利的情况下,贪婪的银行试图从利息中榨取尽可能多的钱。

这开始是按月计息,但他们意识到,如果他们每天收费,他们可以获得更多。比如说,每月 10% 的利息,按每天 1/3% 的天数划分。这是因为前一天的利息是下一个利息周期计算(或复利)的一部分。如果他们每小时、每分钟、每秒划分,他们可以获得更多,直到它基本上成为“即时兴趣”。于是,复利就诞生了。

(由于受欢迎和混乱,政府强制使用 APR 术语将复利百分比转换为我们普通人可以理解的“年利率”。所以,如果它说 APR,而且大多数人都这样做,那就是复利。)

复利是一个 X/0 问题,因为您试图获得即时利息。 维基百科关于复利的文章应该提供一些计算复利的有用公式。但是,在使用此类公式时要记住的一件重要事情是,您不能仅将 APR 之类的东西除以 12 来获得 MPR 数字。否则就不是复利,也没有那么简单。

于 2011-11-02T22:21:57.623 回答
3

你的措辞有点混乱。但我的理解是,您想根据每月付款和一些利率计算出某人可以负担多少信贷。正如其他人指出的那样,您首先需要在纸上执行此操作,以确保您有正确的利息类型和复利期的公式。但这不是 StackOverflow 的意义所在,我们在这里专注于编程!因此,让我们假设具有复利和每月付款的信用卡式贷款(您可以根据需要重写任何其他公式)。

我可以在网上找到这些公式的最佳资源是:贷款或投资公式。此页面为几乎所有变量预先解决了化合物公式!所以你不需要记住大学商业数学课的介绍。好的。

所以现在我们只需要将正确的公式翻译成 JavaScript。这就是我们的 StackOverflow 观众想要看到的!在我们的例子中,其中:

  • A =总贷款金额
  • P = 每月付款金额
  • N = 月数
  • i = 年利率/12

A = (P/i)[1-(1+i)^-N]

  1. 好的,让我们将方括号更改为普通括号。A = (P/i)(1-(1+i)^-N)
  2. 现在我们不希望 JavaScript 认为第一项是一种方法,我们希望它把它们相乘。所以让我们添加星号。A = (P/i) * (1 - (1+i)^-N)
  3. JavaScript 认为插入符号是按位 XOR 运算符,因此对于幂,我们可以改用 Math.pow()。A = (P/i) * (1 - Math.pow((1+i),(-N))
  4. 完毕!这可以在 JavaScript 中工作。一个带有舒适变量名的漂亮的人类可读示例怎么样?

    var MonthlyPaymentAmount = parseFloat($('#txtMonthlyPayment').val());
    var APR = 16.9 / 100;   //16.9% APR
    var InterestRate = (APR / 12);     //monthly interest
    
    for (var nMonths = 12; nMonths <= 36; nMonths += 12) {
        var TotalAmountOfPayments = nMonths * MonthlyPaymentAmount;
    
        var TotalAmountOfCredit = (MonthlyPaymentAmount / InterestRate) * (1 - Math.pow((1 + InterestRate), (-nMonths)));
    
        var TotalAmountOfInterest = TotalAmountOfPayments - TotalAmountOfCredit;
    
        alert("Total Loan Amount: $" + TotalAmountOfCredit + "Total Paid:" + TotalAmountOfPayments + ", Interest:" + TotalAmountOfInterest);
    }
    

给你!这将根据每月付款、给定的 APR 利率和 12、24 和 36 个月的期限计算可用信用总额。如果这不是您的目标,请阅读该数学教程并选择另一个公式来转换为 JavaScript!

于 2011-11-04T01:59:29.573 回答
2

试试下面的这个页面,它还包含有很大帮助的 excel 电子表格。

http://www.yorku.ca/amashal/mortgage.htm

如果您可以按照脑海中的 excel 计算进行操作,那么您可以轻松地敲出代码。

“我花了 4 年时间拿到数学学位,结果我的教授告诉我我学到的东西是绝对正确的,但完全没用”

于 2011-11-02T21:38:25.950 回答
1

这实际上取决于您正在寻找的兴趣类型(复合/简单/等)。例如,我会在这里查看:http: //www.hotscripts.com/search/javascript/interest

于 2011-11-01T20:48:01.280 回答
0

使用公式

A=P(1+r/n)^nt

其中,A:有利息的未来价值 P:本金金额 r:年利率(十进制) n:没有。每年复利的倍数 t:没有。投资的年份

在接受用户的 int 值后,将“ r ”值除以 100 转换为浮点值。提供单选按钮以选择投资类型,如季度、月度、年度等,您可以使用 if 条件设置“ n ”值。

因此您可以使用单个函数计算任何类型的兴趣。

于 2016-10-17T20:26:15.510 回答