Главная страница
    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.013 c
1-15018
Woolen
2002-12-24 15:25
2003.01.06
Как скопировать объект?


1-15094
Beginner
2002-12-22 18:53
2003.01.06
Как в RichEdit вставить текст в текущую позицию курсора?


4-15354
Cosmic
2002-11-17 22:13
2003.01.06
Как создать меню на форме?


1-15052
Separator
2002-12-25 07:53
2003.01.06
Работа с реестром


6-15192
Devid
2002-11-06 22:10
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский