ondalık basamakları sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

ondalık basamakları sorunu

Mesaj gönderen erdogan_ozkaya »

Merhaba arkadaşlar aşağıdaki kod ile hesaplama yapabiliyorum fakat sonuçlar hep 12345678 gibi çıkıyor D,E,F,G,H,K,L,M : Extended; bu kısmı eklediğimde ise hata veriyor özetle 123.456,78 yapmak istiyorum nasıl yapabilirim ?

teşekkürler

Kod: Tümünü seç

procedure TARAC_EKSTRALARI.btn1Click(Sender: TObject);
var
    SERVIS_BEDELI,ORAN,KESINTI_TUTARI,HESAP,
    KDV_ORAN,KDV_TOPLAM,TEVKIFAT_1,TEVKIFAT_2,TEVKIFAT_HESAP,
    TEVKIFAT_DAHIL_TOPLAM,TEVKIFAT_HARIC_TOPLAM,A,B,C:variant;
    D,E,F,G,H,K,L,M : Extended;
begin
              SERVIS_BEDELI:=StrToFloat(edtSERVIS_BEDELI_TEXT.Text);
              ORAN:=StrToFloat(cbbKESINTI_ORAN.Text);
              KDV_ORAN:=StrToFloat(cbbKDV_ORANI.Text);

              HESAP:=  SERVIS_BEDELI / 100 * ORAN;
              edtINDIRIM_TOPLAMI_TEXT.Text:=floattostr(HESAP);
              edtFATURA_TUTARI.Text:=  SERVIS_BEDELI  - SERVIS_BEDELI  / 100 * ORAN;
              edtGIDERLER_TEXT.Text:= SERVIS_BEDELI  - SERVIS_BEDELI  / 100 * ORAN ;
              A:= StrToFloat(edtFATURA_TUTARI.Text);
              edtKDV_TOPLAM_TUTAR_TEXT.Text:=  A * KDV_ORAN / 100 ;   // KDV_ORAN   / 100 * SERVIS_BEDELI - SERVIS_BEDELI / 100 * ORAN ;



              TEVKIFAT_1:=StrToFloat(cbbTEVKIFAT_1.Text);
              TEVKIFAT_2:=StrToFloat(cbbTEVKIFAT_2.Text);

              TEVKIFAT_HESAP:= edtKDV_TOPLAM_TUTAR_TEXT.Value * TEVKIFAT_1 / TEVKIFAT_2;
              TEVKIFAT_DAHIL_TOPLAM := edtKDV_TOPLAM_TUTAR_TEXT.Value * TEVKIFAT_1 / TEVKIFAT_2 +
                                       SERVIS_BEDELI - SERVIS_BEDELI / 100 * ORAN;;
              edt2TEV_DAHIL_TOPLAM.Text:=floattostr(TEVKIFAT_HESAP);
              edt2TEVKIFAT_HARIC_TOPLAM.Text:=floattostr(TEVKIFAT_DAHIL_TOPLAM);
 
              edtTEVKIFAT_HARIC_TOPLAM.Text:= A * KDV_ORAN / 100 + A;
                    {

             K:=edtSERVIS_BEDELI_TEXT.Value;
             L:=edtINDIRIM_TOPLAMI_TEXT.Value;
             M:=edtFATURA_TUTARI.Value;
             D:=edtKDV_TOPLAM_TUTAR_TEXT.Value;
             E:=edt2TEV_DAHIL_TOPLAM.Value;
             F:=edt2TEVKIFAT_HARIC_TOPLAM.Value;
             G:=edtTEVKIFAT_HARIC_TOPLAM.Value;


             edtSERVIS_BEDELI_TEXT.Text:=FloatToStrF(K, ffNumber, 8, 2);
             edtINDIRIM_TOPLAMI_TEXT.Text:=FloatToStrF(L, ffNumber, 8, 2);
             edtFATURA_TUTARI.Text:=FloatToStrF(M, ffNumber, 8, 2);
             edtKDV_TOPLAM_TUTAR_TEXT.Text:=FloatToStrF(D, ffNumber, 8, 2);
             edt2TEV_DAHIL_TOPLAM.Text:=FloatToStrF(E, ffNumber, 8, 2);
             edt2TEVKIFAT_HARIC_TOPLAM.Text:=FloatToStrF(F, ffNumber, 8, 2);
             edtTEVKIFAT_HARIC_TOPLAM.Text:=FloatToStrF(G, ffNumber, 8, 2);   }

end;
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: ondalık basamakları sorunu

Mesaj gönderen erdogan_ozkaya »

:)))

işine yarayan olabilir :)

teşekkürler

Kod: Tümünü seç

procedure TARAC_EKSTRALARI.btn1Click(Sender: TObject);
var
    SERVIS_BEDELI,ORAN,KESINTI_TUTARI,HESAP,
    KDV_ORAN,KDV_TOPLAM,TEVKIFAT_1,TEVKIFAT_2,TEVKIFAT_HESAP,
    TEVKIFAT_DAHIL_TOPLAM,TEVKIFAT_HARIC_TOPLAM,A,B,C:variant;
    D,E,F,G,H,K,L,M : Extended;
begin
             K:=edtSERVIS_BEDELI_TEXT.Value;
             L:=edtINDIRIM_TOPLAMI_TEXT.Value;
             M:=edtFATURA_TUTARI.Value;
             D:=edtKDV_TOPLAM_TUTAR_TEXT.Value;
             E:=edt2TEV_DAHIL_TOPLAM.Value;
             F:=edt2TEVKIFAT_HARIC_TOPLAM.Value;
             G:=edtTEVKIFAT_HARIC_TOPLAM.Value;


             edtSERVIS_BEDELI_TEXT.Text:=FloatToStrF(K, ffGeneral, 8, 2);
             edtINDIRIM_TOPLAMI_TEXT.Text:=FloatToStrF(L, ffGeneral, 8, 2);
             edtFATURA_TUTARI.Text:=FloatToStrF(M, ffFixed, 8, 2);
             edtKDV_TOPLAM_TUTAR_TEXT.Text:=FloatToStrF(D, ffGeneral, 8, 2);
             edt2TEV_DAHIL_TOPLAM.Text:=FloatToStrF(E, ffGeneral, 8, 2);
             edt2TEVKIFAT_HARIC_TOPLAM.Text:=FloatToStrF(F, ffGeneral, 8, 2);
             edtTEVKIFAT_HARIC_TOPLAM.Text:=FloatToStrF(G, ffGeneral, 8, 2);



              SERVIS_BEDELI:=StrToFloat(edtSERVIS_BEDELI_TEXT.Text);
              ORAN:=StrToFloat(cbbKESINTI_ORAN.Text);
              KDV_ORAN:=StrToFloat(cbbKDV_ORANI.Text);

              HESAP:=  SERVIS_BEDELI / 100 * ORAN;
              edtINDIRIM_TOPLAMI_TEXT.Text:=floattostr(HESAP);
              edtFATURA_TUTARI.Text:=  SERVIS_BEDELI  - SERVIS_BEDELI  / 100 * ORAN;
              edtGIDERLER_TEXT.Text:= SERVIS_BEDELI  - SERVIS_BEDELI  / 100 * ORAN ;
              A:= StrToFloat(edtFATURA_TUTARI.Text);
              edtKDV_TOPLAM_TUTAR_TEXT.Text:=  A * KDV_ORAN / 100 ;   // KDV_ORAN   / 100 * SERVIS_BEDELI - SERVIS_BEDELI / 100 * ORAN ;



              TEVKIFAT_1:=StrToFloat(cbbTEVKIFAT_1.Text);
              TEVKIFAT_2:=StrToFloat(cbbTEVKIFAT_2.Text);

              TEVKIFAT_HESAP:= edtKDV_TOPLAM_TUTAR_TEXT.Value * TEVKIFAT_1 / TEVKIFAT_2;
              TEVKIFAT_DAHIL_TOPLAM := edtKDV_TOPLAM_TUTAR_TEXT.Value * TEVKIFAT_1 / TEVKIFAT_2 +
                                       SERVIS_BEDELI - SERVIS_BEDELI / 100 * ORAN;;
              edt2TEV_DAHIL_TOPLAM.Text:=floattostr(TEVKIFAT_HESAP);
              edt2TEVKIFAT_HARIC_TOPLAM.Text:=floattostr(TEVKIFAT_DAHIL_TOPLAM);

              edtTEVKIFAT_HARIC_TOPLAM.Text:= A * KDV_ORAN / 100 + A;


             K:=edtSERVIS_BEDELI_TEXT.Value;
             L:=edtINDIRIM_TOPLAMI_TEXT.Value;
             M:=edtFATURA_TUTARI.Value;
             D:=edtKDV_TOPLAM_TUTAR_TEXT.Value;
             E:=edt2TEV_DAHIL_TOPLAM.Value;
             F:=edt2TEVKIFAT_HARIC_TOPLAM.Value;
             G:=edtTEVKIFAT_HARIC_TOPLAM.Value;


             edtSERVIS_BEDELI_TEXT.Text:=FloatToStrF(K, ffNumber, 8, 2);
             edtINDIRIM_TOPLAMI_TEXT.Text:=FloatToStrF(L, ffNumber, 8, 2);
             edtFATURA_TUTARI.Text:=FloatToStrF(M, ffNumber, 8, 2);
             edtKDV_TOPLAM_TUTAR_TEXT.Text:=FloatToStrF(D, ffNumber, 8, 2);
             edt2TEV_DAHIL_TOPLAM.Text:=FloatToStrF(E, ffNumber, 8, 2);
             edt2TEVKIFAT_HARIC_TOPLAM.Text:=FloatToStrF(F, ffNumber, 8, 2);
             edtTEVKIFAT_HARIC_TOPLAM.Text:=FloatToStrF(G, ffNumber, 8, 2);
end;
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: ondalık basamakları sorunu

Mesaj gönderen xxxjedixxx »

Edit1.Text := FormatFloat('#,##0.#0', Sayi);
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: ondalık basamakları sorunu

Mesaj gönderen thelvaci »

Küçük bir anımsatma; kodunuzda (/ 100 * ORAN) Division by Zero hatası almanız muhtemel. Bence bu durumu da kontrol etmelisiniz. Ayrıca, variant değişkenler üzerinde çalışmak son derece yavaştır.
Cevapla