Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Ежедневное начисление процентов по депозитам / 25 сообщений из 58, страница 1 из 3
04.03.2013, 21:04
    #38173856
Бакыт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
здравствуйте
необходимо реализовать алгоритм начисления
сумма начисления должна в базе храниться двумя знаками после запятой
но если ежедневную сумму начисления буду округлять до двух знаков то , у меня будет разница небольшая
как реализовать ?
...
Рейтинг: 0 / 0
04.03.2013, 21:07
    #38173862
Lecter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
Бакыт,

Хранить не двумя знаками? Вводить корректировку? Обратится к заказчику( насяльнику ) и спросить что делать? В банке или где там, должна быть чЕткая инструкция на эту тему. Это же бабло :)
...
Рейтинг: 0 / 0
04.03.2013, 21:10
    #38173866
Бакыт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
LecterБакыт,

Хранить не двумя знаками? Вводить корректировку? Обратится к заказчику( насяльнику ) и спросить что делать? В банке или где там, должна быть чЕткая инструкция на эту тему. Это же бабло :)
эффективная реализация интересует надо до копеек совпадало
...
Рейтинг: 0 / 0
04.03.2013, 21:14
    #38173869
Бакыт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
пока кружиться мысль создать таблицу с двумя столбцами 1 столбец number(18.2) и number(18.4)
и каждый раз при insert начисления суммировать эти поля разницу этих двух полей если сумма равна 0,01 то прибавлять или отнимать смотря какое поле больше
...
Рейтинг: 0 / 0
04.03.2013, 21:23
    #38173872
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
Бакыт,

как уже сказали выше, нужно вначале понять, что происходит с этими долями копеек в окружающей Вас банковской реальности. Остаются они на счету, "прощаются" или переносятся на другой счёт, до какого знака учитываются и т.д. Получить алгоритм работы с ними. А потом уже его реализовывать.

PS: Какое отношение тема имеет к разделу, пока не понимаю. Может, в Проектирование БД или Разработку ИС?
...
Рейтинг: 0 / 0
04.03.2013, 21:24
    #38173873
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
Бакыт,

увеличивать с двух на четыре знака мало, если процент сам нецелый.
...
Рейтинг: 0 / 0
04.03.2013, 21:34
    #38173887
Бакыт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
suPPLerБакыт,

как уже сказали выше, нужно вначале понять, что происходит с этими долями копеек в окружающей Вас банковской реальности. Остаются они на счету, "прощаются" или переносятся на другой счёт, до какого знака учитываются и т.д. Получить алгоритм работы с ними. А потом уже его реализовывать.

PS: Какое отношение тема имеет к разделу, пока не понимаю. Может, в Проектирование БД или Разработку ИС?
должны оставатся на этом счету
грубо говоря если человеку надо выплатить 10 руб
за 3 дня
я должен начислить
1 день 3.33
2 день 3.33
3 день 3,34
...
Рейтинг: 0 / 0
04.03.2013, 21:35
    #38173890
Бакыт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
-2-Бакыт,

увеличивать с двух на четыре знака мало, если процент сам нецелый.
до 6 можно чтобы еще точнее было
...
Рейтинг: 0 / 0
04.03.2013, 22:56
    #38173944
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
Бакытдо 6 можно чтобы еще точнее былоты не расслабляйся, если нужно ежедневно начислять проценты, чтобы сумма сошлась...
...
Рейтинг: 0 / 0
04.03.2013, 23:20
    #38173960
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
А что, формулу сложного процента уже отменили?

Модератор: Тема перенесена из форума "Oracle".
...
Рейтинг: 0 / 0
05.03.2013, 09:17
    #38174139
Dmitry6237
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
Бакыт,

разница между чем и чем?

зачем начислять ежедневно?. проценты учитываются раз в месяц
...
Рейтинг: 0 / 0
05.03.2013, 09:19
    #38174141
Бакыт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
Dmitry6237Бакыт,

разница между чем и чем?

зачем начислять ежедневно?. проценты учитываются раз в месяц
к сожалению у нас начисление каждый день
...
Рейтинг: 0 / 0
05.03.2013, 09:24
    #38174143
П-Л
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
Начисление процентов за один день - целая область знаний.
Для простоты предположим, что нет ввода данных задним числом. Тогда проценты за дату Д должны считаться как:
% от начала сделки до даты Д
- % от начала сделки до даты Д-1

Далее начинаются нюансы. По некоторым видам сделок (финансовых инструментов) проценты не включают первый день, но включают последний, по некоторым - наоборот.
Число дней сделки расчитывается по разным правилам.
Число дней в году тоже принимает разные значений.
Если баланс закрывается за предвыходной/предпразничный день, то может потребоваться насчитать за этот день проценты и за следующие выходные.
Сумма основного долга может меняться.
Ставка может быть плавающая, определяемая по некоторым условиям (в моей практике был кредит, где она менялась еждневно).

Если допускается ввод данных задним числом, то вопрос еще резко усложняется.
...
Рейтинг: 0 / 0
05.03.2013, 09:26
    #38174148
П-Л
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
Забыл - проценты могут быть только с тем количеством цифр после запятой, как то определено для валюты. Десятых долей копеек не бывает.
...
Рейтинг: 0 / 0
05.03.2013, 09:36
    #38174156
Бакыт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
П-ЛНачисление процентов за один день - целая область знаний.
Для простоты предположим, что нет ввода данных задним числом. Тогда проценты за дату Д должны считаться как:
% от начала сделки до даты Д
- % от начала сделки до даты Д-1

Далее начинаются нюансы. По некоторым видам сделок (финансовых инструментов) проценты не включают первый день, но включают последний, по некоторым - наоборот.
Число дней сделки расчитывается по разным правилам.
Число дней в году тоже принимает разные значений.
Если баланс закрывается за предвыходной/предпразничный день, то может потребоваться насчитать за этот день проценты и за следующие выходные.
Сумма основного долга может меняться.
Ставка может быть плавающая, определяемая по некоторым условиям (в моей практике был кредит, где она менялась еждневно).

Если допускается ввод данных задним числом, то вопрос еще резко усложняется.

все аспекты по начислению отпускаем кроме реализации
хранения и обработки данных в этом ввиде
1 день 3.33
2 день 3.33
3 день 3,34
чтобы выплатить 10 рублей
...
Рейтинг: 0 / 0
05.03.2013, 09:58
    #38174174
П-Л
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
П-ЛТогда проценты за дату Д должны считаться как:
% от начала сделки до даты Д
- % от начала сделки до даты Д-1
Расчет процентов за день сводится к двум расчетам за период. Расчет процентов за период без учета тех нюансов, что я перечислил, невозможен. Оно, конечно, хочется раз! и сразу легко посчитать. Не получается, сцуко.
...
Рейтинг: 0 / 0
05.03.2013, 10:05
    #38174183
NikolayV81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
Бакыт,

У вас в правилах расчёта процентов ( мелким шрифтом в каком нибудь приложении к договору и правилам ) должна быть прописанна формула с учётом правил округления и капитализации, по идее при начислении процентов ежедневно с капитализацией используют формулу:

{d} = trunc ( {d-1} * ( 100 + %{d-1} ) / 100 ),
где {d} сумма на счёте на предыдущий день в копейках
{d-1} сумма на предыдущий день
%{d-1} процент для суммы на предыдущий день

при этом разрядность расчёта округляемого выражения должна быть как минимум равна разрядности вычисления дневной процентной ставки + 2 разряда, причём данное вычисление нельзя делать через типы с плавающей запятой типа float ;)

в такой схеме расчёта есть минус, сумма может быть меньше теоретической, расчитанной с "абслютной точностью"
поэтому иногда разрядность хранения суммы остатка увеличивают, при этом оговаривают в правилах формулу приведения этой суммы к сумме в руб. коп. которая может быть снята со счёта при совершении операции...
...
Рейтинг: 0 / 0
05.03.2013, 10:51
    #38174247
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
Бакытвсе аспекты по начислению отпускаем кроме реализации
хранения и обработки данных в этом ввиде
1 день 3.33
2 день 3.33
3 день 3,34
чтобы выплатить 10 рублей

Если Вы упрощаете задачу до такой степени - да, нужно сделать дополнительное поле для счета (а не проводки начисления процентов), куда заносить погрешность округления. в каждую проводку записывать округленную (результат расчета + погрешность), погрешность обновлять.
...
Рейтинг: 0 / 0
05.03.2013, 11:07
    #38174268
П-Л
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
NikolayV81У вас в правилах расчёта процентов ( мелким шрифтом в каком нибудь приложении к договору и правилам ) должна быть прописанна формула с учётом правил округления и капитализации, по идее при начислении процентов ежедневно с капитализацией используют формулу:
{d} = trunc ( {d-1} * ( 100 + %{d-1} ) / 100 ),
где {d} сумма на счёте на предыдущий день в копейках
{d-1} сумма на предыдущий день
%{d-1} процент для суммы на предыдущий день

Во всех договорах, с которыми я имел дело, формула задавалась для начисления процентов за период. Чтобы ежедневные начисления за каждый день, будучи сохраненными до крпеек и потом сложенными, дали тот же результат, что и формула за период, надо считать как я предложил, или хранить ежедневную погрешность, которую тоже накапливать, как предложил Матроскин.

Особенно интересно выглядят "ежедневные начисления" процентов приметодах типа 360/360 за последний день февраля 31 числа месяцев. Похоже, что ТС хочет и банковские методики влезть и упрщенность подхода не потерять. Не получится.
...
Рейтинг: 0 / 0
05.03.2013, 11:35
    #38174315
P_ress
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
Знаком с реализацией идеи Кота Матроскина. В принципе работает. Используем ежедневные начисления и имеет место изменения задним числом. Имеется таблица где хранятся "откусанные" после округления доли с размерностью до 12 после запятой. учитываются они в контрольных точках (например раз в квартал если выплата идет раз в квартал) или в конце срока. Но это все равно не спасает в случае больших сумм и конвертаций. копейка где-то да вылезет. Здесь уже нужно мнение бухгалтера, будет ли он решать вопрос с такими косяками. Раз в год где то...
...
Рейтинг: 0 / 0
05.03.2013, 12:20
    #38174410
Bogdanov Andrey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
Бакытвсе аспекты по начислению отпускаем кроме реализации
хранения и обработки данных в этом ввиде
1 день 3.33
2 день 3.33
3 день 3,34
чтобы выплатить 10 рублей
Надо просто понять, что проценты начисляются не каждый день, а с той периодичностью, которая требуется по договору. Таким образом расчитывается правильная сумма на полном периоде (в вашем случае - 10 рублей за 3 дня). Ну а ежедневное приращение считается простой пропорцией: [m*S/N] - [(m-1)*S/N)], где m - номер дня, S - общая сумма, N - общее число дней, квадратные скобки - округление до копеек.
...
Рейтинг: 0 / 0
05.03.2013, 12:39
    #38174451
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
П-Л, все перечисленные Вами аспекты для постоянной ставки поддаются довольно простой реализации (для каждого пополнения вводится дата начала начисления процентов, сами проценты считаются по формуле сложного процента для каждого пополнения отдельно, если расчет ведется на заданную (будущую) дату, то результат фиксируется).
В случае, когда сама ставка скачет как бешеная лошадь - да, проще начислять ежедневно, но, опять-таки, начислять можно без ограничения разрядности - это практически снимает вопросы по ошибкам округления.
Округление суммы до копеек - можно либо отнести на презентацию, либо ввести отдельным полем.
Подход с хранением ошибок округления - по сути то же самое, но немножко через задний проход.
...
Рейтинг: 0 / 0
05.03.2013, 12:46
    #38174463
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
andrey_anonymousОкругление суммы до копеек - можно либо отнести на презентацию, либо ввести отдельным полем.

А как в "презентации" Вы будете определять, что первые два платежа надо округлить до 33 копеек, а третий - до 34? Неокругленные суммы-то одинаковы.
...
Рейтинг: 0 / 0
05.03.2013, 12:51
    #38174475
<пр%цнт>
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
Бакыт,

Код: plsql
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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
SQL> with bank_data as
  2   (select 0.05 pr, 10 cap_interval, 20 period, 100 summa from dual),
  3  day_data as
  4   (select level day_cnt,
  5           mod(level, cap_interval) add_day_cnt,
  6           ceil((level + 1) / cap_interval) - 1 cap_interval_cnt,
  7           cap_interval,
  8           pr,
  9           summa
 10      from bank_data
 11    connect by level <= period)
 12  select day_cnt "Кол-во дней",
 13         add_day_cnt "С начала периода",
 14         cap_interval_cnt "Кол-во периодов кап-ции",
 15         summa * power((1 + pr), cap_interval_cnt) "Сумма после кап-ции",
 16         summa_new "Итоговая сумма",
 17         summa_new - summa "Прибыль",
 18         summa_new - lag(summa_new, 1, summa) over(order by day_cnt) "За последний день"
 19    from (select day_cnt,
 20                 add_day_cnt,
 21                 cap_interval_cnt,
 22                 summa,
 23                 pr,
 24                 trunc(summa * power((1 + pr), cap_interval_cnt) * (1 + add_day_cnt * pr / cap_interval), 2) summa_new
 25            from day_data)
 26   order by day_cnt
 27  /
 
Кол-во дней С начала периода Кол-во периодов кап-ции Сумма после кап-ции Итоговая сумма    Прибыль За последний день
----------- ---------------- ----------------------- ------------------- -------------- ---------- -----------------
          1                1                       0                 100          100,5        0,5               0,5
          2                2                       0                 100            101          1               0,5
          3                3                       0                 100          101,5        1,5               0,5
          4                4                       0                 100            102          2               0,5
          5                5                       0                 100          102,5        2,5               0,5
          6                6                       0                 100            103          3               0,5
          7                7                       0                 100          103,5        3,5               0,5
          8                8                       0                 100            104          4               0,5
          9                9                       0                 100          104,5        4,5               0,5
         10                0                       1                 105            105          5               0,5
         11                1                       1                 105         105,52       5,52              0,52
         12                2                       1                 105         106,05       6,05              0,53
         13                3                       1                 105         106,57       6,57              0,52
         14                4                       1                 105          107,1        7,1              0,53
         15                5                       1                 105         107,62       7,62              0,52
         16                6                       1                 105         108,15       8,15              0,53
         17                7                       1                 105         108,67       8,67              0,52
         18                8                       1                 105          109,2        9,2              0,53
         19                9                       1                 105         109,72       9,72              0,52
         20                0                       2              110,25         110,25      10,25              0,53
...
Рейтинг: 0 / 0
05.03.2013, 17:15
    #38174959
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ежедневное начисление процентов по депозитам
Бакыт,

Разницу себе на счет зачисляй. Тоже мне проблема ... )))
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Ежедневное начисление процентов по депозитам / 25 сообщений из 58, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]