Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.06;
Скачать: [xml.tar.bz2];

Вниз

Алгоритм расчета пени   Найти похожие ветки 

 
Вопрошающий   (2002-12-24 09:38) [0]

Есть ли способ наиболее просто расчитать пени за несколько дней
А то использовать цикл и гонять в нем умножения и сложения не очень рационально.

Требуеться решить
есть долг к примеру 20 дней, долг 100руб за каждый день прострочки 0,3% от долга, т.е за 1 день 100+(100*0.3)=130
2 день 130+(130*0,3)=169 и т.д до 20 дня


 
Dona   (2002-12-24 10:05) [1]


формула есть (правило сложных процентов). Кажется, так:
Если S - начальная сумма, Р - приведенная процентная ставка (в твоих вычислениях, кстати, ставка 30%, а не 0,3%. Если 0,3%, то умножать надо на 0,003), то
1 день S1 = S+S*p = S*(1+p)
2 день S2 = S1+S1*p = S1*(1+p) = S*(1+p)*(1+p)=S*(1+p)^2
...
n день Sn = S*(1+p)^n

Приведенная ставка Р = Ставка в % / 100.


 
Anatoly Podgoretsky   (2002-12-24 10:22) [2]

Такие зверсткие условия


 
Dona   (2002-12-24 10:26) [3]


В каком смысле зверские?


 
Anatoly Podgoretsky   (2002-12-24 10:54) [4]

Пени на пени, начиная со следующего дня, так любого можно без штанов оставить.


 
Lady D   (2002-12-24 11:11) [5]


function CalcSumm(APeny: double; var ASum: currency; ADay: DWORD): boolean;
begin
ADay := ADay - 1;
ASum := ASum + (ASum * APeny);
Result := ADay > 0;
if Result then CalcSumm(APeny, ASum, ADay);
end;


 
Identifikator Borna   (2002-12-24 11:29) [6]

>> Lady D © (24.12.02 11:11)

Эта функция работает так как нужно?



 
Lady D   (2002-12-24 11:49) [7]

Identifikator Borna (24.12.02 11:29)
> Эта функция работает так как нужно?

Исходя из исходных данных :-)

Проверьте сами:

procedure TForm1.Button1Click(Sender: TObject);
var
ADay: DWORD;
ASum: currency;
APeny: double;
begin
ADay := StrToInt(Edit1.text);
ASum := StrToCurr(Edit2.Text);
APeny := 0.3;
CalcSumm(APeny, ASum, ADay);
Label1.Caption := FloatToStr(ASum);
end;


 
ЮЮ   (2002-12-24 11:58) [8]

По одной формуле нам не надо: Sn = S*(1+p)^n

Да и простом цикле типа
Sum := Sum0;
Prc := 0.3;
Peny := 0;
for i := 1 to 20 do
Sum := Round(Sum * (1 + Prc));
Peny := Sum - Sum0;
нам неинтересно

Нам рекурсию подавай :-)


 
Lady D   (2002-12-24 12:07) [9]

2 ЮЮ © (24.12.02 11:58)>
Был вопрос:

> Есть ли способ наиболее просто расчитать пени за несколько
> дней
> А то использовать цикл и гонять в нем умножения и сложения
> не очень рационально.

Я всего лишь предложила альтернативу циклу. А что предложили вы?


 
Бурундук   (2002-12-24 12:15) [10]

2Вопрошающий - тебе одного дефолта мало?

Объясняю популярно:
0.3 - это 30%,
а 0.3% = 0.003



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.01.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
14-15311
BF7ru
2002-12-17 17:05
2003.01.06
Siemens sl45i - самый популярный телефон


3-14917
Ops
2002-12-13 14:54
2003.01.06
Сервер рвет все коннекты. Все проги валятся.


1-15007
urza
2002-12-24 13:53
2003.01.06
WinRar


1-15126
OlDemon
2002-12-23 08:03
2003.01.06
В общем проблемка :((


3-14894
Jdrm
2002-12-12 10:52
2003.01.06
Как можно узнать номер текущей записи?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский