Javascript의 PMT 함수
Javascript에서 Excel PMT 기능을 사용하고 싶습니다.파라미터는 다음과 같습니다.
Pmt(이자율, number_payments, PV, FV, 유형)
interest_rate : the interest rate for the loan.
number_payments : the number of payments for the loan.
PV : the present value or principal of the loan.
FV : It is the future value or the loan amount outstanding after all payments have been made.
Type is : It indicates when the payments are due. Type can be one of the following values:
0, 1
http://www.techonthenet.com/excel/formulas/pmt.php 를 참조해 주세요.
이것은 내가 사용하는 코드이다. 나는 마지막 파라미터에 갇혔다.'type'은 0 또는 1입니다.계산에 어떤 영향을 미치는지 알려주세요.
function PMT (ir, np, pv, fv ) {
/*
ir - interest rate per month
np - number of periods (months)
pv - present value
fv - future value (residual value)
*/
pmt = ( ir * ( pv * Math.pow ( (ir+1), np ) + fv ) ) / ( ( ir + 1 ) * ( Math.pow ( (ir+1), np) -1 ) );
return pmt;
}
jQuery가 아닌 일반 Javascript로 부탁드립니다.
다음은 검색 후 PMT 기능의 버전입니다.
function PMT(ir, np, pv, fv, type) {
/*
* ir - interest rate per month
* np - number of periods (months)
* pv - present value
* fv - future value
* type - when the payments are due:
* 0: end of the period, e.g. end of month (default)
* 1: beginning of period
*/
var pmt, pvif;
fv || (fv = 0);
type || (type = 0);
if (ir === 0)
return -(pv + fv)/np;
pvif = Math.pow(1 + ir, np);
pmt = - ir * (pv * pvif + fv) / (pvif - 1);
if (type === 1)
pmt /= (1 + ir);
return pmt;
}
예: 20만 달러의 대출금을 15년 내에 연 7.5%의 이자로 갚기 위해 필요한 월 지급액은 무엇입니까?
ir = 0.075 / 12
np = 15 * 12
pv = 200000
pmt = PMT(ir, np, pv).toFixed(2) = -1854.02
payoff = pmt * np = -333723.6
여기 PMT 버전에서는
PMT: function(rate, nperiod, pv, fv, type) {
if (!fv) fv = 0;
if (!type) type = 0;
if (rate == 0) return -(pv + fv)/nperiod;
var pvif = Math.pow(1 + rate, nperiod);
var pmt = rate / (pvif - 1) * -(pv * pvif + fv);
if (type == 1) {
pmt /= (1 + rate);
};
return pmt;
},
//// PMT에 전화하기
var result = PMT(6.5/1200 , 30*12 , 65000 , 0 , 0);
console.log(result);
//// result : -410.8442152704279
/// 기타 IPMT 및 PPMT도 마찬가지입니다.
IPMT: function(pv, pmt, rate, per) {
var tmp = Math.pow(1 + rate, per);
return 0 - (pv * tmp * rate + pmt * (tmp - 1));
},
PPMT: function(rate, per, nper, pv, fv, type) {
if (per < 1 || (per >= nper + 1)) return null;
var pmt = this.PMT(rate, nper, pv, fv, type);
var ipmt = this.IPMT(pv, pmt, rate, per - 1);
return pmt - ipmt;
},
Type 파라미터의 영향을 이해하는 가장 쉬운 방법은 다음 값을 사용해 보는 것입니다.연이자 = 12%, 월수 = 1, 현재가치 = 100
Type=0(기본값)인 경우 PMT() 함수는 101을 생성합니다.
Type=1일 때 PMT() 함수는 100을 생성합니다.
Type=0의 경우, 이자는 월말에 지급되는 것으로 가정하기 때문에 1개월 동안 계산된다.Type=1의 경우, 이자는 월초에 지급되기 때문에 0개월 동안 계산됩니다.
PMT - (PMT는 javascript에서 지급/수령해야 할 정기금액) 함수
var AnualRate = 0.05; //5% interste rate
var NumberOfYear = 10;
var NumberOfPayments = NumberOfYear * 12;
var ByYear = 12;
var LoanAmount = 20000;
var FutureValue = 0;
var PresentValueInterstFector = Math.pow((1 + AnualRate/ByYear), NumberOfPayments);
var PeriodicPayment = (AnualRate/ByYear) * LoanAmount * (PresentValueInterstFector + FutureValue)/(PresentValueInterstFector-1);
var TotalCost = PeriodicPayment * NumberOfPayments;
var TotalInterset = TotalCost - LoanAmount;
console.log("TotalCost ", TotalCost);
console.log("TotalInterset ", TotalInterset);
javascript 기능 사용
var interestRate = 0.05; // or (5/100) this rate is annual
var numberofYear = 10;
var numberofPayment = numberofYear * 12;
var presentValue = 20000; //this is loan
function PMT(ir,np, pv, fv = 0){
var presentValueInterstFector = Math.pow((1 + ir), np);
var pmt = ir * pv * (presentValueInterstFector + fv)/(PresentValueInterstFector-1);
return pmt;
}
var testPMT = PMT(interestRate/12, numberofPayment, presentValue); //output
console.log(testPMT);
function calculate(){
var getRate = parseFloat(document.getElementById('rate').value);
var getNumberOfYears = parseInt(document.getElementById('numOfYears').value);
var getNumOfPayments = parseInt(document.getElementById('numOfPayments').value);
var getLoanAmount = parseFloat(document.getElementById('loanAmount').value);
var pmt = PMT(getRate/12, getNumOfPayments, getLoanAmount);
document.getElementById('disMonthlypayment').innerHTML = pmt;
var totalCost = pmt * getNumOfPayments;
document.getElementById('disTotalcost').innerHTML = totalCost;
var totalInterset = totalCost - getLoanAmount;
document.getElementById('disTotalInterst').innerHTML = totalInterset;
}
//PMT function (Fazlan refer this)
function PMT(ir,np, pv, fv = 0){
// ir: interest rate
// np: number of payment
// pv: present value or loan amount
// fv: future value. default is 0
var presentValueInterstFector = Math.pow((1 + ir), np);
var pmt = ir * pv * (presentValueInterstFector + fv)/(presentValueInterstFector-1);
return pmt;
}
<table>
<tr><td>Rate : </td><td> <input type="text" id="rate" placeholder="0.05" /> ex: 0.05 = (5/100) </td></tr>
<tr><td>Number of Years : </td><td> <input type="text" id="numOfYears" placeholder="10" /> </td></tr>
<tr><td>Number of Payments : </td><td> <input type="text" id="numOfPayments" placeholder="120" /> Number of Years * 12 </td></tr>
<tr><td>Loan Amount : </td><td> <input type="text" id="loanAmount" placeholder="20000" /> </td></tr>
<tr><td>Monthly Payment : </td><td> <b id="disMonthlypayment"></b> </td></tr>
<tr><td>Total Cost : </td><td> <b id="disTotalcost"></b> </td></tr>
<tr><td>Total Interest : </td><td> <b id="disTotalInterst"></b> </td></tr>
<tr><td><button onclick="calculate()">Calculate</button></td></tr>
</table>
tvmcalcs.com 사이트 덕분에 다음 기능으로 해결했습니다.
function pmt(monthlyRate, monthlyPayments, presentValue, residualValue, advancedPayments) {
t1 = 1+monthlyRate
t2 = Math.pow(t1,monthlyPayments)
t3 = Math.pow(t1,(monthlyPayments-advancedPayments))
return (presentValue-(residualValue/t2))/(((1-(1/(t3)))/monthlyRate)+advancedPayments);
}
또는 당사의 사례에서와 같이 연간 요율이 있는 경우
function pmtWithAnnualRate(annualRate, monthlyPayments, presentValue, residualValue, advancedPayments) {
monthlyRate = annualRate / 1200
t1 = 1 + monthlyRate
t2 = Math.pow(t1,monthlyPayments)
t3 = Math.pow(t1,(monthlyPayments-advancedPayments))
return (presentValue-(residualValue/t2))/(((1-(1/(t3)))/monthlyRate)+advancedPayments);
}
언급URL : https://stackoverflow.com/questions/5294074/pmt-function-in-javascript
'programing' 카테고리의 다른 글
Swift에서 Arg 수가 가변인 함수에 배열 전달 (0) | 2023.04.15 |
---|---|
코드에서 동적 리소스 스타일을 할당하려면 어떻게 해야 합니까? (0) | 2023.04.15 |
Apache POI의 컬럼 크기를 자동화하는 방법은 무엇입니까? (0) | 2023.04.15 |
WPF 팝업 UI가 검은색으로 표시됨 (0) | 2023.04.15 |
서명 중 오류가 발생했습니다. (0) | 2023.04.10 |