Я вижу несколько проблем.
double n;
n = Math.pow(30,12);
int f = (int) Math.floor(n);
30 до 12 степени. Это не имеет смысла для 30-летней ипотеки. Вы имели в виду 30*12
для 360
периодов выплаты. Или, возможно, Math.pow(30,1+montlyRate)
, где monthlyRate = (AR/100)/12
и AR = annual rate
).
int a =(1+t)^f;
Оператор ^
- это не мощность, а exclusive OR
. Вы, вероятно, тоже этого не хотели.
Я рекомендую вам проверить эту вики-статью о вычислениях Mortage Payments
Вот один из способов рассчитать его и затем отобразитьв месяц.
double in = 5.5; // annual percentage rate
double mo_rate = (in / 100) / 12.; // monthly rate
double PV = 400_000.; // present value (cost of the house).
double f = Math.pow(1 + mo_rate, 360); // factor resulting from the linear
// expansion
double payment = mo_rate * PV * f / (f - 1); // Monthly payment including
// interest and
// principal
System.out.printf("Monthly payment is %7.2f%n", payment);
Примечание: разные банки и / или страны могут делать это по-разному.