Taksit

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
dost
Üye
Mesajlar: 104
Kayıt: 08 Oca 2004 11:33

Taksit

Mesaj gönderen dost »

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.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

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.

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

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.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

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
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

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 »

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;
Cevapla