Вычисление платежей по ссуде |
Вычисление регулярных платежей по ссуде (например, при покупке в рассрочку машины или дома) — возможно, самый популярный вид финансовых расчетов. Платежи вычисляют с помощью следующей формулы: Payment = (intRate * (principal / payPerYear))/ /(1 - ((intRate / payPerYear) + l)-payPerYear * numYears )5 где intRate обозначает процентную ставку, principal — ссуду, payPerYear — число платежей в течение года, a numYears — количество лет, отпущенных на погашение ссуды. В программе, приведенной в листинге 6.1, функция regpayo использует эту формулу для вычисления регулярных платежей. В качестве параметров она принимает величину ссуды, процентную ставку, продолжительность ссуды в годах и количество платежей в течение года, а возвращает — сумму платежа. // Вычисляет регулярные платежи по ссуде, double regpay(double principal, double intRate, int numYears, int payPerYear) { double numer; r double denom; double b, e; intRate /= 100.0; // преобразует проценты в дробь numer = intRate * principal / payPerYear; e = -(payPerYear * numYears); b = (intRate / payPerYear) + 1.0; denom = 1.0 - pow(b, e); return numer / denom; } int main () { double p, r; int y, ppy; // Устанавливает locale равным english. // Задайте нужный вам язык и/или регион. cout.imbue(locale("english")); cout « "Enter principal: "; cin » p; cout « "Enter interest rate (as a percentage): "; cin » r; cout « "Enter number years: "; cin » y; cout « "Enter number of payments per year: "; cin » ppy; cout « "\nPayment: " « fixed « setprecision(2) « regpay(p, r, y, ppy) « endl; return 0; Для того чтобы рассчитать регулярные платежи по ссуде, просто введите необходимую информацию в ответ на запросы программы. Далее приведен вывод программы. Enter principal: 1000 Enter interest rate (as a percentage): 9 Enter number years: 5 Enter number of payments per year:. 12 Payment: 20.76 Функция main () содержит несколько элементов, заслуживающих внимания. Во-первых, в региональной настройке (locale) потока вывода cout выбран английский язык. Это сделано с помощью вызова функции-члена imbueo, которая передает как параметр объект locale со значением engiish. В результате денежные суммы выводятся в формате, принятом в англоязычных странах: запятая отделяет тысячи, а точка — дробную часть. Во-вторых, перед выводом на экран числовой формат рассчитанного платежа изменяется на формат с фиксированной точкой (fixed) и точностью представления (precision), равной двум. В результате на экран выводятся два знака в дробной части (после точки) с соответствующим округлением. При необходимости дробная часть заполняется нулями. Подобный подход применяется во всех финансовых программах. При использовании других региональных установок или языка просто измените язык/регион объекта locale, передаваемого функции imbue().
|