Loading
2015. 8. 15. 20:08 - 나쁜철군

엑셀 재무함수 PMT함수를 php로 구현하기

엑셀 재무함수 PMT함수를 php로 구현하기





엑셀 재무함수중에 PMT()라는 함수가 있다

PMT 함수는 적용된 이율로 대출을 받아 약정기간동안 상환할때 월 이자와 원금을 포함한 금액을 구할 수 있다.


자 그러면 엑셀에서 PMT함수는 어떻게 쓸까?


PMT ( rate , nper , pv , fv , type )


위 형식이 엑셀에서 쓰이는 기본 PMT 함수 구조이다.

그러면 각 변수명은 무엇을 뜻하는가?


rate : 기간당 이율

nper : 총납입 횟수 ( 할부기간 )

pv : 현재가치 ( 앞으로 지급할 납입금의 현재 가치의 총액 )

fv : 미래가치 ( 최종 지급 후의 현금잔고, 생략하면 0으로 간주됨 )

type : 지금 시점을 나타내는 숫자로서 0(기간말) 또는 1(기간초) ( 생략가능. 생략하면 0으로 간주됨 )


그럼 엑셀에서 적용을 해보면

이자율 : 연 4.5%

대출원금 : 15,000,000 원

상환기간 : 36개월

위 상황일 경우 월 상환액을 구해보자.


엑셀 함수에 대입해보면

rate : 4.5%/12

nper : 36

pv : 15000000

PMT(4.5%/12 , 36 , 15000000 , 0 , 0) = -446,204

월 상환액은 -446,204원이 나오게 되는데 -값이 보기 실타면 pv 값을 -15,000,000 으로 넣어주면 된다.


그럼 이제 php 함수로 변환을 시켜보자

function PMT($r,$nper,$pv,$fv,$t) {

    $pmt=0;

    if ($r == 0) {

        $pmt = (-$pv - $fv) / $nper;

    } else {

        $pmt = (-$fv * $r - $pv * $r * pow(1 + $r, $nper)) / ((1 + $r * $t) *(pow(1 + $r, $nper) - 1));

    }

    return $pmt;

}


일단 엑셀의 PMT함수와 동일한 PHP의 PMT함수 되시겠다.

들어가는 변수들도 다 동일하다고 보면 되것다.


// rate   기간당 이율

// nper   대출 불입의 총 횟수 [납입 월수]

// pv     현재 가치

// fv     미래 가치

// type   0 : 기말 / 1 : 기초

// return  Number  pmt


위 함수를 가지고 변수값을 넣어보자 동일한 값이 나오는지

값이 이상하게 나온다고 나에게 욕하지 말라

4.5% = 4.5가 아니다

4.5% = 4.5/100 이란 말이다.

그러니 이율을 넣을때는 아래와 같이 넣어주면 된다.


PMT((4.5/100/12), 36, 15000000, 0, 0);


엑셀함수를 php로 바꾸기위해 고민하는 개발자들을 위해~~~






출처 : 나도 예전에 어디선가 찾은거라 ..