Форум: "Основная";
Текущий архив: 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.01 c