매달 $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이라고 나와서 봐주신 것 같다. 조심해라👀