Excel PMT функционирует в JS

Я нашел меня, мало отрывка в Интернете, о PMT вычисляют.

function PMT(i, n, p) {
 return i * p * Math.pow((1 + i), n) / (1 - Math.pow((1 + i), n));
}
function CalculatePMTFromForm(idLoanAmount, idAnnualInterestRate, idMonths, idResult) {
 var i = jQuery('#' + idAnnualInterestRate).val() / 1200;
 var n = jQuery('#' + idMonths).val();
 var p = jQuery('#' + idLoanAmount).val();
 var pmt = PMT(i, n, -p);
jQuery('#' + idResult).val(pmt.toFixed(2));
}
function performCalc() {
 CalculatePMTFromForm('LoanAmount', 'InterestRate', 'Months', 'Payment');
}
jQuery(document).ready(function() { performCalc(); jQuery('.calc').keyup(performCalc); });

Когда страница является загрузкой, в поле ввода результата я вижу "NaN", и когда я tpye некоторое несоответствующее число тогда "-Бесконечность" сообщение появляюсь. Я ищу на "NaN" в файлах, и я нашел в jquery.js, но после того, как я изменяю, ничто не изменяется. И я не могу найти Бесконечность

Как я могу измениться, это обменивается сообщениями?

Править

Код вызова:-

function performCalc() {
  CalculatePMTFromForm('LoanAmount', 'InterestRate', 'Months', 'Payment');
}

jQuery(document).ready(function() {
  performCalc(); jQuery('.calc').keyup(performCalc);
});

Это работается для меня:

if(pmt>0 && pmt<Number.MAX_VALUE) {jQuery('#' + idResult).val(pmt.toFixed(2));}
8
задан Holian 20 January 2010 в 14:15
поделиться

2 ответа

NAN означает «не число».

Убедитесь, что вы проверяете каждое входное значение, является ли он числовым. Выбросьте сообщение об ошибке, если нет, или установите его на 0, в зависимости от того, необходим ли он для вашего расчета или нет.

Хорошая коллекция лучших способов проверить значение для того, является ли это числовое это так, вопрос: Проверка номеров в JavaScript - ISNUMIC ()

0
ответ дан 5 December 2019 в 05:08
поделиться

Попробуйте это: -

function CalculatePMTFromForm(idLoanAmount, idAnnualInterestRate, idMonths, idResult) {
 var i = parseFloat($('#' + idAnnualInterestRate).val()) / 1200;
 var n = parseFloat($('#' + idMonths).val());
 var p = parseFloat($('#' + idLoanAmount).val());
 var pmt = PMT(i, n, -p);
 $('#' + idResult).val(pmt.toFixed(2));
}

.Val (), вероятно, возвращает тип строки, а не тип числа.

0
ответ дан 5 December 2019 в 05:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: