Подскажите пожалуйста как эту формулу рассчитать на js.
Ошибки сейчас:
● Если сначала ничего не трогать и довести месяцы до 259 то сумма перестает изменяться, почему?
Вот формула, она только для примера можете использовать свою подходящую под этот калькулятор, но прикрепите скриншот в ответе
Вот html + js код калькулятора
<!DOCTYPE html>
<html lang="ru" class="reset-html">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Калькулятор кредитных процентов</title>
<!-- CSS -->
<link rel="stylesheet" href="css/main.css">
<!-- Favicon -->
<link rel="shortcut icon" href="img/favicon.png" type="image/png">
</head>
<body class="style-body reset-body">
<section class="calculation">
<div class="container calculation_container">
<h2 class="calculation__title">Кредитный калькулятор</h2>
<div class="calculation__sliders">
<div class="calculation__slider calculation__loan-amount">
<div class="calculation__area-slider">
<div class="calculation__slider-label">
<div class="calculation__slider-title">Сколько вам нужно</div>
<div class="calculation__slider-result"><span>30 000</span>₽</div>
</div>
<input class="calculation__slider-button" type="range" min="30000" max="30000000" step="10000" value="30000">
</div>
<div class="calculation__hint">
<div class="calculation__hint-left">
от <span>30 000</span>₽
</div>
<div class="calculation__hint-right">
до <span>30 000 000</span>₽
</div>
</div>
</div>
<div class="calculation__slider calculation__number-months">
<div class="calculation__area-slider">
<div class="calculation__slider-label">
<div class="calculation__slider-title">Срок кредита</div>
<div class="calculation__slider-result"><span>6</span> месяцев</div>
</div>
<input class="calculation__slider-button" type="range" min="6" max="360" step="1" value="6">
</div>
<div class="calculation__hint">
<div class="calculation__hint-left">
от <span>6</span> месяцев
</div>
<div class="calculation__hint-right">
до <span>30</span> лет
</div>
</div>
</div>
<div class="calculation__slider calculation__interest-rate">
<div class="calculation__area-slider">
<div class="calculation__slider-label">
<div class="calculation__slider-title">Процент по кредиту</div>
<div class="calculation__slider-result"><span class="percent">5</span> %</div>
</div>
<input class="calculation__slider-button" type="range" min="0.05" max="0.30" step="0.01" value="0.05">
</div>
<div class="calculation__hint">
<div class="calculation__hint-left">
от <span>5</span>%
</div>
<div class="calculation__hint-right">
до <span>30</span>%
</div>
</div>
</div>
<p class="calculation__sliders-warning reset-p">
Предварительный расчёт. Не является публичной офертой.
</p>
</div>
<div class="calculation__application">
<p class="calculation__application-title">Ежемесячный платёж</p>
<p class="calculation__application-price"><span>30 000</span>₽</p>
<button class="calculation__send">Подать заявку</button>
</div>
</div>
</section>
<!-- JS -->
<script
src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
crossorigin="anonymous"></script>
<script>
(function( $ ) {
/* Калькулятор */
(function() {
let
$slider = $('.calculation__slider-button');
$slider.on('input', function()
{
let
$sliderHint = $(this).parents('.calculation__slider').find('.calculation__slider-result > span'),
value = Number( $(this).val() ).toLocaleString(),
$overallResult = $(this).parents('.calculation').find('.calculation__application-price > span'),
/* сумма кредита */
loanAmount = Number( $(this).parents('.calculation__sliders').find('.calculation__loan-amount').find('.calculation__slider-button').val() ),
/* количество месяцев */
numberMonths = Number( $(this).parents('.calculation__sliders').find('.calculation__number-months').find('.calculation__slider-button').val() ),
/* процентная ставка */
interestRate = Number( $(this).parents('.calculation__sliders').find('.calculation__interest-rate').find('.calculation__slider-button').val() );
/* Добавить значение в подсказку */
$sliderHint.html( value );
/* Записать процент в подсказку */
if ( $sliderHint.hasClass('percent') ) {
let percent = $(this).val() * 100;
$sliderHint.html( percent.toFixed() );
}
console.log(Number(value));
console.log(loanAmount, numberMonths, interestRate);
/* Расчитать ежемесячный платеж */
// let result = loanAmount * ( interestRate / ( 1 + interestRate ) - numberMonths - 1 );
// let result = loanAmount * ( interestRate + ( interestRate / ( ( ( 1 + interestRate ) ** numberMonths ) - 1 ) ) );
// let result = loanAmount * (interestRate * ((1 + interestRate) ** numberMonths) ) / ( ((1 + interestRate) ** numberMonths) - 1 );
let result = (loanAmount * interestRate) / ( 1 - ( 1 / ( ( 1 + interestRate ) ** numberMonths ) ) );
/* Вывести выплаты в html */
result = result.toFixed(2);
$overallResult.html( result );
});
/* Задать начальные значения калькулятора */
$slider.trigger('input');
})();
})( jQuery );
</script>
</body>
</html>