Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
dost
Üye
Mesajlar: 104 Kayıt: 08 Oca 2004 11:33
Mesaj
gönderen dost » 09 Nis 2004 11:48
Merhaba;
Taksit Tutarı küsüratlarını yuvarlayarak, küsüratları son aya nasıl bırakabilirim.
Kod: Tümünü seç
var
PESIN_TUTAR, PESINAT, TAKSIT_TUTARI : Real;
VADE, i : Integer;
begin
PESIN_TUTAR := StrToFloat(DBEdit4.Text);
PESINAT := StrToFloat(DBEdit5.Text);
VADE := StrToInt(DBEdit6.Text);
TAKSIT_TUTARI := (PESIN_TUTAR - PESINAT)/VADE;
for i:=1 to VADE do
begin
DM.ADOQuery2.Insert;
DM.ADOQuery2.FieldByName('HESAP_NO').AsInteger := StrToInt(DBEdit2.Text);
DM.ADOQuery2.FieldByName('ODEME_TARIHI').AsDateTime := IncMonth(Date, i);
DM.ADOQuery2.FieldByName('TAKSIT_TUTARI').AsFloat := TAKSIT_TUTARI;
DM.ADOQuery2.Post;
end;
end;
Yardımcı olabilirmisiniz?
Teşekkürler.
husonet
Admin
Mesajlar: 2962 Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:
Mesaj
gönderen husonet » 09 Nis 2004 11:57
Merhaba
Taksit küsüratları bir tabana göre yuvarlama yapman lazım. Mesala 15750000.Tl olsun bunun Binli kısmını çıkartman için bir algoritma oluştur. İlk önce haneleri hesapla birler onlar, yüzler gibi milyonlara gelince elindeki değer sıfırdan büyükse son taksit'e ekle.
Unutma kuracağın algortima çok önemli.
İyi Geceler.
mussimsek
Admin
Mesajlar: 7603 Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:
Mesaj
gönderen mussimsek » 10 Nis 2004 12:47
RoundTo ile büyük yuvarlamalar yapabilirsin. Mesela 100 binler hanesine yuvarlayabilirsin. Bu şekilde yuvarlayarak farkları bulup, bir değişkende topla ve sonuncuya ekle.
Kolay gelsin.
freeman35
Admin
Mesajlar: 2380 Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı
Mesaj
gönderen freeman35 » 10 Nis 2004 09:00
Kod: Tümünü seç
TAKSIT_TUTARI := (PESIN_TUTAR - PESINAT) DIV VADE;// Tam sayı olarak böler
KUSURAT := PESIN_TUTAR - (TAKSIT_TUTARI * VADE);
SON_TAKSIT := TAKSIT_TUTARI + KUSURAT;
Kolay gele
ZAGOR TENAY TÜRK 'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
F r e e M a n 3 5 .5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
TRSoft
Kıdemli Üye
Mesajlar: 636 Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:
Mesaj
gönderen TRSoft » 10 Nis 2004 11:40
merhaba
ben integer sayıları yuvarlamak için aşağıdaki functionı kullanıyorum.
Kod: Tümünü seç
function Yuvarla(deger: extended;Olcu:Integer): extended;
var
yeni : integer;
begin
if deger <= 2147483647 then
begin
yeni := round(deger);
result := ((yeni div Olcu) * Olcu) + (byte((yeni MOD Olcu)>= (olcu/2)) * olcu);
end;
end;
eğer hatalı bir işlem yapıyorsam üstatlar düzeltirse memnun olurum..
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır. HZ. MUHAMMED (S.A.)
dost
Üye
Mesajlar: 104 Kayıt: 08 Oca 2004 11:33
Mesaj
gönderen dost » 10 Nis 2004 05:18
Merhaba,
İlginize teşekkür ederim.
Kod: Tümünü seç
var
PESIN_TUTAR, PESINAT, TAKSIT_TUTARI, KUSURAT: Real;
VADE, i: Integer;
begin
PESIN_TUTAR := StrToFloat(DBEdit4.Text);
PESINAT := StrToFloat(DBEdit5.Text);
VADE := StrToInt(DBEdit6.Text);
TAKSIT_TUTARI := RoundTo((PESIN_TUTAR - PESINAT)/VADE,5);
KUSURAT := PESIN_TUTAR - (PESINAT + (TAKSIT_TUTARI * VADE));
for i:=1 to VADE-1 do
begin
DM.ADOQuery2.Insert;
DM.ADOQuery2.FieldByName('HESAP_NO').AsInteger := StrToInt(DBEdit2.Text);
DM.ADOQuery2.FieldByName('ODEME_TARIHI').AsDateTime := IncMonth(Date, i);
DM.ADOQuery2.FieldByName('TAKSIT_TUTARI').AsFloat := TAKSIT_TUTARI;
DM.ADOQuery2.Post;
end;
DM.ADOQuery2.Insert; //SON TAKSIT
DM.ADOQuery2.FieldByName('HESAP_NO').AsInteger := StrToInt(DBEdit2.Text);
DM.ADOQuery2.FieldByName('ODEME_TARIHI').AsDateTime := IncMonth(Date, i);
DM.ADOQuery2.FieldByName('TAKSIT_TUTARI').AsFloat := TAKSIT_TUTARI + KUSURAT;
DM.ADOQuery2.Post;
end;