[C++] 1주차 과제 리뷰

yeohn·2022년 9월 26일
0

2022-2 C++ 과제 리뷰

목록 보기
1/10

문제

매달 $100를 저축하고 연 이자율이 5%라면, 월 이자율은 0.05/12 = 0.00417이 된다. 첫 달의 잔액은 원금에 이자를 더해서 다음과 같이 계산할 수 있다.

100 * (1+0.00417) = 100.417

매달 저축액을 입력받아 6개월 후의 적립 금액을 출력하는 프로그램을 작성하여라.


작성한 코드

#include <iostream>
using namespace std;

int main()
 {
	double savings, savingsAfter6month;
	double interest = (1 + 0.00417);
	cout << "Enter the monthly saving amount:";
	cin >> savings;

	savings = savings * interest;
	savings = (100 + savings) * interest;
	savings = (100 + savings) * interest;
	savings = (100 + savings) * interest;
	savings = (100 + savings) * interest;
	savingsAfter6month = (100 + savings) * interest;

	cout << "After the sixth month, the account value is " 
    << static_cast<int>(savingsAfter6month * 100) / 100.0;

	return 0;
}

아직 반복문을 배우지 않았기 때문에 그냥 코드를 여러 줄 사용했다.
정답은 608.81 인데 실행 시 608.818 로 나와서 static_cast<int>(savingsAfter6month * 100) / 100.0;코드를 작성했다.

static_cast는 명시적 형 변환에 해당되는데, double을 int로 유형 축소하면서 소수점 이하를 삭제한다. 이때 100을 곱하고 다시 100.0으로 나누면 소수점 두 번째 자리까지 출력한다.


코드에 대한 교수님 코멘트

0.00417로 반올림했기에 0.05 / 12와 비교시,
결과가 0.07의 오차 발생하므로 rate = 0.05 / 12 사용 권함.
다음 번에는 오답처리를 할 수 있습니다.

0.05 / 12의 결과는 0.0416666666으로, 임의로 반올림하여 계산했을 때 오차가 발생한다. 딱 떨어지지 않는 계산일 때는 결과값 대신 계산식을 작성하고 값을 상수로 두지 않기로 한다.
교재에 1 + 0.00417이라고 나와서 봐주신 것 같다. 조심해라👀

0개의 댓글