@Lauraaaaa897564

Почему цикл for не работает?

Не могу реализовать работу цикла. Я сама далека от программировании, но сейчас мне очень важно решать эту задачу для расчета КДН (Коэффициент долговой нагрузки).
Есть минимальный КДН, которое мы и должны отработать цикл до его значение. В коде мне нужно будет найти первоначальный взнос (ПВ) для этого КДН.

Значение down_pmt(ПВ), когда new_kdn= kdn_max?

double down_pmt = #IN_LOAN_DOWN_PMT_PRC.doubleValue();
long down_pmt_amn = 0;
double app_amn = 0;
double rate_month = 0;
double coeff = 0;
double mon_payment = 0;
double award = 0;
double mon_payment_kdn = 0;
double new_kdn = 0;
int kdn_max = 0.5;

for(int i = 0; i == kdn_max; i++) { 

 if (#FN_AUTO_KDN.doubleValue() > #FN_AUTO_KDN_MAX.intValue() && #FN_AUTO_KDN.doubleValue() > 50 && #FN_AUTO_KDN.doubleValue() <= 90 )
     {
       down_pmt =  down_pmt + 5.0;
       down_pmt_amn = (#IN_CAR_PRC.doubleValue() * down_pmt)/100;
       app_amn = #IN_CAR_PRC.doubleValue() - down_pmt_amn;
       rate_month = #IN_LOAN_RATE.doubleValue()/12;
    double loanRate = rate_month;
        double loanTerm = #IN_LOAN_TERM.intValue();
      
        double power = 1.0;
        for (int j = 0; j < loanTerm; j++) {
            power *= (1 + loanRate);
        }
      
       double numerator = loanRate * power;
        double denominator = power - 1;
        coeff = numerator / denominator;
         mon_payment = app_amn *  coeff;
        award = mon_payment * #IN_LOAN_TERM.intValue() -  app_amn;
        mon_payment_kdn = ( app_amn + award -#IN_CAR_PRC.doubleValue()*0.5)/#IN_LOAN_TERM.intValue();
       new_kdn = (#FN_PKB_ACT_CON_PMT_AMN_TTL.doubleValue() + mon_payment_kdn)/ #FN_AUTO_FNL_INC.doubleValue();
      
     }
}

   return down_pmt ;
  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ответы на вопрос 3
ZhenyaMak
@ZhenyaMak
Писать качественный софт? Пфф, это не для меня.
Потому что i никогда не равен kdn_max??
Ответ написан
Lexxtor
@Lexxtor
PHP, Yii2, Android
for(int i = 0; i == kdn_max; i++)
Значит выполнять цикл пока i == kdn_max а это условие не выпоолняется.
Наверно ты имел ввиду
for(int i = 0; i <= kdn_max; i+=0.1)
Ответ написан
@Lauraaaaa897564 Автор вопроса
сейчас цикл для расчета down_pmt работает до 10 раз, как сделать так чтобы она в этой промежутке прекращал работу когда new_kdn уравняется на kdn_max ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы