|
|
|
Задача расчёта кредита
|
|||
|---|---|---|---|
|
#18+
Доброго времени. Начитался книг и форумов про использование BigDecimal в качестве хранения денежных единиц. Для закремпления материла решил написать программку расчёта платежей по кредиту: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Результат: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Появившийся остаток -0.20руб. может быть результатом деления общей суммы на кол-во месяцев с округлением. RoundingMode.HALF_EVEN - Банковское округление (англ. banker's rounding) — округление происходит к ближайшему чётному, то есть 2,5 = 2, 3,5 = 4. Верно ли решена мною задача и корректно ли я использовал BigDecimal. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 17:29:57 |
|
||
|
Задача расчёта кредита
|
|||
|---|---|---|---|
|
#18+
Разрядность при расчете процентов попробуйте выставить не 2 а 6 или больше, сами определите при дебаге сколько вам требуется. И я бы использовал халф_ап все же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 18:52:09 |
|
||
|
Задача расчёта кредита
|
|||
|---|---|---|---|
|
#18+
Ошибка в алгоритме, последний платеж может быть меньше аннуитета. На самом деле нужен цикл while (rest>0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 19:04:02 |
|
||
|
Задача расчёта кредита
|
|||
|---|---|---|---|
|
#18+
NixicИ я бы использовал халф_ап все же. Почему HALF_UP? Наверное это должно регламентироваться бизесс задачей данного предприятия. ivanraОшибка в алгоритме, последний платеж может быть меньше аннуитета. На самом деле нужен цикл while (rest>0) Согласен что последний платеж может быть меньше аннуитета для выравнивания ошибок округления. Но использование while не совсем верно, ведь в договоре четко прописывается срок кредитования. Думаю достаточно добавить проверку после цикла что rest=0 и Exception если это не так (ошибка алгоритма). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2013, 09:40:56 |
|
||
|
Задача расчёта кредита
|
|||
|---|---|---|---|
|
#18+
Вы не видели кредитных договоров. На самом деле, в зависимости от конкретных условий (дата выдачи не совпадает с концом процентного периода, учитывается реальное количество дней в месяце, а не 30 как в примере, очень большой срок кредита), последний платеж может быть не только меньше ежемесячного, но и вообще может быть равным нулю. Срок кредита используется в формуле расчета ежемесячного платежа, но после этого, при расчете графика срок напрямую уже не используется, на фактический остаток долга начисляются проценты за месяц, а оставшаяся часть платежа уменьшает остаток долга. В итоге, в большинстве случаев, получаем график с нужным количеством строк. Но иногда, в крайних случаях, количество строк в графике может не совпасть со сроком кредита. В любом случае, надо внимательно читать кредитный договор и реализовывать именно то, что там написано, а не как в данном примере, где каждый месяц 30 дней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2013, 10:45:33 |
|
||
|
Задача расчёта кредита
|
|||
|---|---|---|---|
|
#18+
ivanra, спасибо за развёрнутый ответ. Я попробую найти кредитный договор и переписать логику в соотвествии с ним и тем что Вы сказали. В принципе я хотел узнать правильно-ли я использовал BigDecimal, но написать алгоритм по всем правилам будет тоже интересно. Может позже размещу реализацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2013, 12:54:40 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=247&tid=2130069]: |
0ms |
get settings: |
15ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 295ms |
| total: | 442ms |

| 0 / 0 |
