Опубликовано Оставить комментарий

Калькулятор ипотеки

Ипотечная квартира
Ипотечная квартира

На базовом курсе JavaScript рассматриваем формулу вычисления ипотечного аннуитетного платежа, но полноценного калькулятора ипотеки  нужно создать HTML форму и подружить ее с кодом JS. Расчет ипотеки требует знания размера кредита S, процентной ставки p и времени кредитования в платежных периодах n (т.е. в месяцах). Если в нашем кредитном калькуляторе нужно учитывать первоначальный платеж,, то можно ввести дополнительную переменную и рассматривать целую стоимость недвижимости, а не тело кредита (в заметке это не делается).

руб.
%
лет

Платеж за месяц:

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

var S = 1e6, //тело кредита
p = 14, //процентная ставка в годовых
n = 10, //количество лет
A = 0; //ежемесячный платёж

Примечание: задача решается наименее простым способом для начинающих разработчиков. Можно создать калькулятор, используя объектный подход.

Формула ипотеки

Формула ипотеки записывается как A = S * p / (1 - Math.pow(1 + p, -n), где p — процентная ставка, выраженная в долях за месяц. (Примечание: вопрос перевода долей в проценты и обратно рассматривается в 6-7 классах средней школы), n — количество платежных периодов (т.е. месяцев, а при определении переменной мы указали годы).

p = p / 1200; //переводим в доли за месяц
n = n * 12; //переводим в месяцы. Можно и так: n *= 12;

Форма калькулятора

<div id="ipoteka">
 <div class="row"><input type="text" name="S" id="S" placeholder="Тело кредита" >руб.</div>
 <div class="row"><input type="text" name="p" id="p" placeholder="Процентная ставка" >%</div>
 <div class="row"><input type="text" name="n" id="n" placeholder="Период кредитования">г.</div>
 <div class="row"><a href="javascript:calc()">Найти</a></div>
 <div class="row">Платеж за месяц:
 <div id="result"></div> 
 </div> 
</div>

Дизайн калькулятора

 #ipoteka{
 font: 1em Arial,sans-serif;
 float: left;
 border: 2px dashed #B0FFB6
}

#ipoteka a {
 text-decoration: none;
 color: #369;
 border-radius: 4px;
 border: 1px solid #69e; 
 padding: 3px 6px;
 display: inline-block;
}

#ipoteka .row{
 margin: 12px;
}
#ipoteka .row input{
 padding: 5px;
 border-radius: 4px;
 border: 1px solid #69e;
 outline: 0;
}
#ipoteka .row input:focus{
 box-shadow: 0 0 4px #369
}
#ipoteka #result{
 font: 3em Arial,sans-serif;
}

Скрипт JS-калькулятора

function calc(){
 var S = document.getElementById("S").value - 0;
 var p = document.getElementById("p").value - 0;
 var n = document.getElementById("n").value - 0;
 
 if(
  typeof S != "number" ||
  typeof p != "number" ||
  typeof n != "number" 
 ) return false;
 
 p = p / 1200; 
 n = n * 12; 
 
 document.getElementById("result").innerHTML =  (S * p / (1 - Math.pow(1 + p, -n))).toFixed(2); 
}
Добавить комментарий