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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Особенно интересно выглядят "ежедневные начисления" процентов приметодах типа 360/360 за последний день февраля 31 числа месяцев. Похоже, что ТС хочет и банковские методики влезть и упрщенность подхода не потерять. Не получится.
...
Рейтинг: 0 / 0
Ежедневное начисление процентов по депозитам
    #38174315
P_ress
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знаком с реализацией идеи Кота Матроскина. В принципе работает. Используем ежедневные начисления и имеет место изменения задним числом. Имеется таблица где хранятся "откусанные" после округления доли с размерностью до 12 после запятой. учитываются они в контрольных точках (например раз в квартал если выплата идет раз в квартал) или в конце срока. Но это все равно не спасает в случае больших сумм и конвертаций. копейка где-то да вылезет. Здесь уже нужно мнение бухгалтера, будет ли он решать вопрос с такими косяками. Раз в год где то...
...
Рейтинг: 0 / 0
Ежедневное начисление процентов по депозитам
    #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
Ежедневное начисление процентов по депозитам
    #38174451
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
П-Л, все перечисленные Вами аспекты для постоянной ставки поддаются довольно простой реализации (для каждого пополнения вводится дата начала начисления процентов, сами проценты считаются по формуле сложного процента для каждого пополнения отдельно, если расчет ведется на заданную (будущую) дату, то результат фиксируется).
В случае, когда сама ставка скачет как бешеная лошадь - да, проще начислять ежедневно, но, опять-таки, начислять можно без ограничения разрядности - это практически снимает вопросы по ошибкам округления.
Округление суммы до копеек - можно либо отнести на презентацию, либо ввести отдельным полем.
Подход с хранением ошибок округления - по сути то же самое, но немножко через задний проход.
...
Рейтинг: 0 / 0
Ежедневное начисление процентов по депозитам
    #38174463
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousОкругление суммы до копеек - можно либо отнести на презентацию, либо ввести отдельным полем.

А как в "презентации" Вы будете определять, что первые два платежа надо округлить до 33 копеек, а третий - до 34? Неокругленные суммы-то одинаковы.
...
Рейтинг: 0 / 0
Ежедневное начисление процентов по депозитам
    #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
Ежедневное начисление процентов по депозитам
    #38174959
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бакыт,

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


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