Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS中的excelpmt函数_Javascript_Jquery - Fatal编程技术网

Javascript JS中的excelpmt函数

Javascript JS中的excelpmt函数,javascript,jquery,Javascript,Jquery,我在网上发现了一个关于PMT计算的小snipet 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).

我在网上发现了一个关于PMT计算的小snipet

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”,当我看到一些不相关的数字时,就会出现“-Infinity”消息。 我在文件中搜索到“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));}
if(pmt>0&&pmtNaN表示“不是数字”

确保检查每个输入值是否为数字。如果不是,则抛出错误消息,或者将其设置为0,具体取决于它是否对计算至关重要

检查某个值是否为数字的最佳方法集合如下:

像这样尝试:-

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()可能返回的是字符串类型而不是数字类型。

这个问题已经过时一年多了,但我最近需要做同样的事情。我想到了以下几点:

function pmt(rate_per_period, number_of_payments, present_value, future_value, type){
    if(rate_per_period != 0.0){
        // Interest rate exists
        var q = Math.pow(1 + rate_per_period, number_of_payments);
        return -(rate_per_period * (future_value + (q * present_value))) / ((-1 + q) * (1 + rate_per_period * (type)));

    } else if(number_of_payments != 0.0){
        // No interest rate, but number of payments exists
        return -(future_value + present_value) / number_of_payments;
    }

    return 0;
}
类型
需要是
1
0
,与Excel的类型相同。每个时段的
费率
需要是十进制(例如:
0.25
,而不是
25%

例如:

/* Example: */
var interest    = 0.07,     // Annual interest
    years       = 5,        // Lifetime of loan (in years)
    present     = 10000,    // Present value of loan
    future      = 20000,    // Future value of loan
    beginning   = 1;        // Calculated at start of each period

var payment = -pmt(interest / 12,   // Annual interest into months
                   years * 12,      // Total months for life of loan
                   present,
                   future,
                   beginning);
示例期间(月)的付款约为474.60美元


注意结果的否定,因为金额是一个desection-即:花费您$474-结果是一个负值。如果结果是一个积分,结果将是一个正值。通常您希望将其保持为负值/正值,但如果您以类似于
总债务:$XYZ
的格式显示,您会希望将其转换为一个负值肯定。

显示对CalculatePMTFromForm?函数performCalc(){CalculatePMTFromForm('LoanAmount','InterestRate','Months','Payment');}jQuery(document)。就绪(函数(){performCalc();jQuery('.calc')。keyup(performCalc);});并且您确定a)所讨论的每个输入元素都有正确的ID(并且该ID不重复)和b)每个输入都有一个由服务器提供的初始值。a)是的,b)没有初始值,但如果我将其设置为0,则NaN将消失。但用户可以从输入框中删除0值,因此再次显示NaN。不知何故,我需要更改此消息,或者我必须检查结果输入字段值是否为NaN,然后我必须给出另一个值..只是我不知道如何..嗨,有人能告诉我这个问题的答案是什么帖子吗。。我正在阅读所有的帖子,但无法理解在我的项目中应该实施哪一个。我真的不明白。即使我检查了输入字段的有效性,用户也可能会写入错误的格式,只需获取一条消息以键入“number或smtng”……但在用户输入错误字符之前,将在结果输入字段NaN中获取一条消息。我将检查输入字段,但我需要以某种方式打开非无限信息。来自未来的感谢。2015年11月,马蒂·麦克弗利已经来了。