folder Tahribat.com Forumları
linefolder Delphi - Pascal
linefolder Virgülden Sonra Yuvarlama



Virgülden Sonra Yuvarlama

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SALDIRAY
    SALDIRAY's avatar
    Kayıt Tarihi: 10/Eylül/2010
    Erkek

    1. yol

    function TForm1.GaripYuvarla(sayi: Real): Real;
    var
     s:string;
     VirgulNo:byte;
     sonuc:Real;
    begin
     s:=FloatToStr(sayi);
     VirgulNo:=AnsiPos(',',s);
     sonuc:=StrToFloat(copy(s,1,VirgulNo+1)); //Virgül+1 basamak alındı
     s:=copy(s,VirgulNo+2,1); //yuvarlama buna göre yapılacak
     if StrToInt(s)>=5 then sonuc:=Sonuc+0.1;
     if StrToInt(s)<5 Then sonuc:=sonuc+0.05;
     Result:=sonuc;
    end;

    2.yol

    procedure TForm1.Button1Click(Sender: TObject);

    var
    x : real ;
    y :real;
    begin
    x:=24.499999;
    y:=round(x*100)/100;
    Edit1.Text:=floattostr(y);
    end;

     

    sayın müridler bunları buldum araştırmalarım sonucunda ama hiç bi pok anlamadım. hobi olarak uğraşıyorum bi program yazmaya kalkıştım Kahkaha

    şincik programda levha ölçüsü var levha ölçüsü edit1 e kalite birim fiyatı edit2 ye yazılcak. edit1*edit2 nin sonucuda label1 e yazılcak. ama ondalıklı fiyat olduğu zaman ondalığın 2 basamağının görünmesini istiyorum. yada yuvarlamasın sadece virgülden sonra 2 basamak görünsün yeter menüden falan ayarlanmazmı bu basit bi şekilde pls Kahkaha


    Kendi şansımı yaratırım...
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wQuantum
    wQuantum's avatar
    Kayıt Tarihi: 23/Şubat/2010
    Erkek

    uses Math;

    var
      aNumber: Real;
    begin
      aNumber := 12345.67;

      edit1.Text := FormatFloat('#,###', GaripYuvarla(aNumber)); // küsüratları almaz
      edit1.Text := FormatFloat('#,###', Floor(GaripYuvarla(aNumber))); //aşağı yuvarlar
      edit1.Text := FormatFloat('#,###', Ceil(GaripYuvarla(aNumber))); // yukarı yuvarlar
    end;


    -Q-
Toplam Hit: 4308 Toplam Mesaj: 2