대출을 받을 때 매달 갚아야 할 금액이 얼마인지 궁금한 적이 있으신가요? EMI(Equated Monthly Installment, 균등 월 상환금)는 대출 원금과 이자를 합쳐 매월 동일한 금액으로 나누어 상환하는 방식입니다. 이번 글에서는 C 언어로 EMI를 자동으로 계산해 주는 계산기 프로그램을 만들어 보겠습니다.
실행 예시
입력 -: 원금(principal) = 2000
이자율(rate) = 5
기간(time) = 4년
출력 -: Monthly EMI is= 46.058037
EMI 계산 공식
프로그램에서 사용되는 공식은 다음과 같습니다.
EMI = (P × R × (1+R)T) / ((1+R)T − 1)
각 변수의 의미는 다음과 같습니다.
- P: 대출 원금(Principal Amount)
- R: 월별 이자율 (연 이자율 ÷ 12 ÷ 100)
- T: 대출 기간을 개월 수로 환산한 값 (연 단위 × 12)
여기서 중요한 점은 연 이자율을 그대로 사용하지 않고 12로 나눈 뒤 다시 100으로 나누어 월 단위 소수 이자율로 변환한다는 것입니다. 예를 들어 연 이자율 5%라면 R = 5 / (12 × 100) = 0.004167이 됩니다.
문제 해결 접근 방법
- 원금, 이자율, 대출 기간을 float형 변수로 입력받습니다.
- 위의 EMI 공식을 적용하여 월 상환액을 계산합니다.
- 계산된 EMI 금액을 화면에 출력합니다.
알고리즘
Start
Step 1 -> EMI 계산 함수 선언
float calculate_EMI(float p, float r, float t)
float emi
r = r / (12 * 100) // 월 이자율로 변환
t = t * 12 // 연 단위를 개월 수로 변환
emi = (p * r * pow(1 + r, t)) / (pow(1 + r, t) - 1)
return emi
Step 2 -> main() 함수에서
float principal, rate, time, emi 변수 선언
principal = 2000, rate = 5, time = 4 값 설정
emi = calculate_EMI(principal, rate, time) 호출
emi 출력
Stop
C 언어 구현 코드
#include <math.h>
#include <stdio.h>
// EMI를 계산하는 함수
float calculate_EMI(float p, float r, float t){
float emi;
r = r / (12 * 100); // 월 이자율
t = t * 12; // 개월 단위 기간
emi = (p * r * pow(1 + r, t)) / (pow(1 + r, t) - 1);
return (emi);
}
int main(){
float principal, rate, time, emi;
principal = 2000;
rate = 5;
time = 4;
emi = calculate_EMI(principal, rate, time);
printf("\nMonthly EMI is= %f\n", emi);
return 0;
}
실행 결과
Monthly EMI is= 46.058037
코드 설명
이 프로그램은 math.h 헤더 파일에 포함된 pow() 함수를 사용하여 거듭제곱을 계산합니다. calculate_EMI() 함수는 원금, 연 이자율, 대출 기간(년)을 인자로 받아 내부적으로 월 이자율과 총 개월 수로 변환한 후 공식에 대입합니다. 위 예제에서는 원금 2,000원, 연 이자율 5%, 기간 4년 조건에서 매월 약 46.06의 EMI가 산출됩니다. 실제 응용에서는 scanf()를 활용해 사용자로부터 값을 직접 입력받도록 확장할 수도 있습니다.