JQuery процентный калькулятор - рассчитать сумму кредита от ежемесячного платежа - PullRequest
1 голос
/ 26 октября 2011

Я написал небольшой калькулятор процентов по интересам.

  • это начисление суммы кредита от ежемесячного повторного платежа

ЖИВОЙ ДЕМО ЗДЕСЬ

Проблема в том, что моя логика расчета процентов просто неверна.

Посмотрите:

//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)

Как видите, петля действует месяцами / депозит / процент. Просто нужна помощь с логином расчета процентов в цикле.

Ответы [ 5 ]

3 голосов
/ 03 ноября 2011

Основная проблема заключается в том, что вы пытаетесь решить проблему исчисления, используя неисчислимые методы.Исчисление, если вы не в курсе, является разделом математики для того, чтобы по существу пытаться решить проблемы X / 0.В случае сложных процентов, это случай, когда жадные банки пытаются выжать как можно больше денег из процентов.

Это началось как ежемесячные проценты, но они поняли, что если они начисляют за день, они могут получить больше.Это такой же процент, скажем, 10% в месяц, разделенный на дни, как 1/3% в день.Это связано с тем, что проценты за предыдущий день являются частью расчета (или составного) для следующего цикла начисления процентов.Они могли бы получить больше, если бы они делились в час, в минуту, в секунду, пока это не превратилось в «мгновенный интерес».Таким образом, рождается сложный процент.

(Из-за популярности и путаницы правительство обязало использовать термин АТР для перевода процента сложного процента в «Годовой процентный коэффициент», к которому мы, нормальные люди, можем относитьсяТаким образом, если в нем написано «APR», а большинство - «сложный процент».)

Сложный процент - это проблема X / 0, потому что вы пытаетесь получить мгновенный процент. Статья Википедии о сложных процентах должна содержать некоторые полезные формулы для расчета сложных процентов.Однако при использовании таких формул важно помнить, что нельзя просто взять что-то вроде APR и разделить на 12, чтобы получить показатель MPR.В противном случае это не было бы сложным интересом, и это не так просто.

2 голосов
/ 04 ноября 2011

Ваша формулировка немного сбивает с толку. Но я понимаю, что вы хотите выяснить, сколько кредита кто-то может себе позволить, исходя из ежемесячного платежа и некоторой процентной ставки. Как уже отмечали другие, сначала нужно сделать это на бумаге, чтобы убедиться, что у вас есть правильная формула для типа процентов и начисления периода. Но дело не в StackOverflow, мы сосредоточены на программировании! Итак, давайте предположим, что кредитование по кредитной карте осуществляется с использованием сложных процентов и ежемесячных платежей (при необходимости вы можете переписать любую другую формулу).

Лучший ресурс, который я смог найти в Интернете для этих формул, находится здесь: Формулы по кредитам или инвестициям . Эта страница имеет составную формулу, предварительно решенную практически для любой переменной! Так что вам не нужно помнить это вступление в бизнес-урок математики из колледжа. Ницца.

Так что теперь нам просто нужно перевести правильную формулу в JavaScript. Это то, что хочет видеть наша аудитория StackOverflow! В нашем случае, где:

  • A = Общая сумма кредита
  • P = Сумма ежемесячного платежа
  • N = количество месяцев
  • i = APR Процентная ставка / 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);
    }
    

Вот, пожалуйста! Это рассчитает общую доступную сумму кредита на основе ежемесячного платежа, заданной процентной ставки в АТР и 12, 24 и 36 месяцев. Если это не совсем та цель, которую вы имели в виду, прочитайте этот учебник по математике и выберите другую формулу для перевода на JavaScript!

2 голосов
/ 03 ноября 2011

Попробуйте эту страницу ниже, она также содержит таблицу Excel, которая очень помогает.

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

Если вы можете следить за вычислениями Excel в своей голове, вы можете легко набрать код.

"Я потратил 4 года, чтобы получить диплом по математике, только чтобы мой профессор рассказал мне, что я узнал, это абсолютно верно, но совершенно бесполезно"

1 голос
/ 02 ноября 2011

Это действительно зависит от типа интересующего вас интереса (сложный / простой / и т. Д.).Примеры я бы посмотрел здесь: http://www.hotscripts.com/search/javascript/interest

0 голосов
/ 17 октября 2016

Используйте формулу

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

где, A: будущая стоимость с процентами P: основная сумма r:годовой процент (десятичное число) n: нет.раз интерес составляется в год т: нет.лет, в которые инвестируются деньги

. Преобразуйте значение ' r ' в значение с плавающей запятой, разделив его на 100 после получения значения int от пользователя.Установите переключатель, чтобы выбрать тип инвестиций, например, ежеквартально, ежемесячно, ежегодно и т. Д. Соответственно, вы можете установить значение ' n ', используя условие if.

, чтобы вы могли рассчитать любой тип процентов, используя единыйфункция.

...