javascript - JS中的Excel PMT函数

标签 javascript jquery

我在网上找到了一些关于 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”,当我输入一些不相关的数字时,然后出现“-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));}

最佳答案

这个问题已经死了一年多了,但我最近需要做同样的事情。这是我想出的:

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;
}

type需要是 10 , 与 Excel 相同。 rate_per_period需要是小数(例如: 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 美元。

请注意结果的否定,因为金额是扣除 - 即:花费您 474 美元 - 结果是负值。如果结果是信用,结果将是积极的。通常,您希望将其保留为负/正,但如果您以 Total Debt: $XYZ 之类的格式显示它,您希望将其转换为正值。

关于javascript - JS中的Excel PMT函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2094967/

相关文章:

javascript - Android Cordova插件开发-JS接口(interface)错误

javascript - D3 - 轴在页面中间时的网格

javascript - Json 数据未呈现到 DOM

jquery - 透明的 jQuery UI 对话框

javascript - css选择器排除jquery对象的某些后代及其后代?

javascript - LiveValidation - 将验证消息更改为图片?

javascript - 安全地解析和评估用户输入

javascript - Array.prototype.each = function(callback) { for (var i = 0; i < this.length; i++) callback(this[i]); } } - 这个可以吗?

javascript - 使用 jQuery 更新 div 未显示在 DOM 上

javascript - 32 位或 64 位对 jquery/javascript 有影响吗?