본문 바로가기
Python (Data)/coding

[python programming- error handling] 원리금균등상환 계산 에러 핸들링

by Gina Sim 2021. 2. 4.

Python으로 원리금균등상환 계산기 구현하기 ↓

2021/02/04 - [Python/coding] - [python programming] 원리금균등상환 계산기 구현/ 핸드폰 할부 이자 계산

 

[python programming] 원리금균등상환 계산기 구현/ 핸드폰 할부 이자 계산

핸드폰을 할부로 구매할 경우 할부 이자가 붙어 월 요금을 납입하게 되는데 이때 원리금균등상환방식으로 납입하게 된다. 원리금균등상환방식은 매달 납입하는 총금액은 같지만, 단말기의 월

hyunsitstory.tistory.com


원리금균등상환 계산기 Result

 

위 사진을 보면 마지막 납입 회차의 월 청구액이 다른 것을 확인할 수 있다.

 

원리금균등상환 방식의 경우 월 청구액이 같아야 하는데,

할부 개월에 맞게 잔여할부금이 딱 떨어지지 않는 경우가 있어 

이를 해결하기 위해 고안한 방법의 결과이다.


수정 전 코드

 

원리금균등상환 방식은 월 청구액이 일정하나,

세부적으로 볼 경우 월별 할부원금과 할부이자는 다른 것이 특징이다.

 

하지만 월불입금 공식을 이용하여 월 청구액을 계산하고

이를 기반으로 월 할부원금과 할부이자를 구했을 때,

잔여 할부금이 0원으로 딱 떨어지지 않아 다음과 같은 결과가 나오기도 한다.

 

Case 1:

위 사진과 같이 할부 개월이 24개월임에도 불구하고

24회 납입 차에 잔여 할부금이 남아있어 25회 차 까지 가는 경우가 있고,

 

Case 2:

23회 차 납입 후 잔여 할부금이 그다음 달의 할부원금보다 작아

24회 차의 잔여할부금이 마이너스가 되는 경우가 있다.

 

다시 말해, 계산이 정확히 나누어 떨어지지 않는 두 가지 경우
1. 마지막 납입회차 때 잔여 할부금이 마이너스인 경우
2. 마지막 납입회차 때 잔여 할부금이 남아있는 경우

수정 후 코드

 

두 경우 모두 마지막 납입 회차의 잔여 할부금이 대게 ±10 이내이고, 

더 차이가 나더라도 그 격차가 크진 않았다.

 

때문에 다음과 같이 코드를 수정하였다.

 

납입회차(month)가 할부 개월(months)과 같을 때, 즉, 납입회차가 마지막이면

if month == months:

월 할부원금(fee_month)은 잔여할부금 전체(fee_left)가 되도록 한다.

fee_month = fee_left

월 할부원금이 잔여 할부금에 따라 높아지거나 낮아지면 월 청구금도 달라지므로,

월 청구금(bill_month)도 변경된 월 할부원금(fee_month)에 이자(interest)를 더한 값으로 바꾸어 준다.

bill_month = fee_month + interes

그 외 납입회차에는 그대로 월 할부원금이 (월 청구금 - 이자)로 계산되도록 한다.

else:                                                  
fee_month = bill_month - interest

 

 

반응형

댓글