Во-первых, последнее значение неверно, потому что вы используете процентную ставку как нормальное число в формуле, хотя на самом деле это процент.Поэтому вам нужно разделить его на 100:
float amount = principal * pow((1 + ((interest_rate / 100) /times_compounded)), times_compounded);
Теперь для точности вы можете использовать std::fixed
в сочетании с std::setprecision
, чтобы установить точность печати с плавающей запятой по умолчанию при использовании std::cout
,Мы можем использовать макрос, чтобы сделать его более читабельным, например:
#define FIXED_FLOAT(x, p) std::fixed<<std::setprecision(p)<<(x)
Итак, полный раздел вывода будет выглядеть так:
cout << "Interest Rate: " << setw(19) << FIXED_FLOAT(interest_rate, 2) << "%" << endl;
cout << "Times Compounded: " << setw(17) << FIXED_FLOAT(times_compounded, 0) << endl;
cout << "Principal: " << setw(17) << "$ " << setw(7) << FIXED_FLOAT(principal, 2) << endl;
cout << "Interest: " << setw(20) << "$ " << FIXED_FLOAT(interest, 2) << endl;
cout << "Amount in Savings: " << setw(9) << "$ " << FIXED_FLOAT(amount, 2);
Кроме того, interest = interest_rate * 10.197647
кажется подозрительным.Проценты должны быть только суммой минус основная сумма.