Главная страница
    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.57 MB
Время: 0.036 c
14-15258
alex134
2002-12-17 00:16
2003.01.06
dll ka


14-15276
GROL
2002-12-15 23:09
2003.01.06
Delphi 7 - XP/2


14-15303
Voldemar
2002-10-18 05:18
2003.01.06
Можно ли отловить нажатие Reset а?


3-14915
Roki
2002-12-13 16:09
2003.01.06
Плиз, ссылку на бесплатную Case-прогу...


14-15275
Дремучий
2002-12-16 23:20
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский