ondalık kısmı ıkı hane nasıl yapılır

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
rapsodim
Üye
Mesajlar: 147
Kayıt: 15 Eki 2003 03:52

ondalık kısmı ıkı hane nasıl yapılır

Mesaj gönderen rapsodim »

Table1.FieldByName('KDV').AsFloat :=Table1.FieldByName('tutar').AsFloat*0.18;

şeklinde bir ifadem var bunun sonucunu virgülden sonra iki hane ile kısıtlamak istiyorum nasıl yapabilirim.teşekkür ederim.
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

:ara real
rapsodim
Üye
Mesajlar: 147
Kayıt: 15 Eki 2003 03:52

Mesaj gönderen rapsodim »

çıkan ifadenin her seferinde xxx.01 ,xxxx.95 gibi çıkmasını istiyorum.
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

bunu o alanı tablonda gösterdiğin fieldin propertiesideki displayformat ile yapsanız daha kolay :) 0.00 yaparsanız onu olur.
.-.-.-.-.-.-.-. ^_^
rapsodim
Üye
Mesajlar: 147
Kayıt: 15 Eki 2003 03:52

Mesaj gönderen rapsodim »

dediğinizi anlamadım.ondalık hanesi 3 ,4 ,5 olacak sekılde sayılar var.bunları bir fonksıyon ıle nasıl 2 hanede sabıt tutabılırım
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Math unitinde RoundTo diye bir fonksiyon var , onu bir inceleyin isterseniz..
rapsodim
Üye
Mesajlar: 147
Kayıt: 15 Eki 2003 03:52

Mesaj gönderen rapsodim »

asıl sorunu benım
5,776338 ifadesini 5,78 yapmak veya 6,320681 ifadesini 6,32 yapmak.dediğiniz foksiyonu çalıştıramadım.
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Hocam RoundTo tam istediğiniz cevap , diğer sorunuzda açıkladım.

Not : Lütfen sorunuza farklı bir başlık oluşturmak yerine aynı başlıktan devam edin .. :wink:
ercere
Üye
Mesajlar: 48
Kayıt: 23 Kas 2004 02:38
Konum: Ulus-BARTIN

Mesaj gönderen ercere »

Merhaba kendi kullandığım kodu yazıyorum.

Kod: Tümünü seç

function TANA.sayi(str: string;kr:integer): double;
var
rak:double;
i:integer;
ayrac,deci,s1,s2:string;
begin
 if decimalseparator=',' then
    begin ayrac:='.';deci:=',';end
   else begin ayrac:=',';deci:='.';end;

for i:=1 to length(Str) do
Begin
if Str[i]=ayrac then
delete(Str,i,1);

End;
 if  pos(deci,str)<>0 then  begin
 s1:=copy(str,1,pos(deci,str)-1) ;
 s2:=copy(str,pos(deci,str)+1,length(str)-pos(deci,str)+1);
  end else
  begin
    s1:=str;
    s2:='000';
   end;
 rak:=ceil(strtoint(s2)/power(10,length(s2)-kr));
 s2:=floattostr(rak);
result:= strtofloat(s1+deci+s2);
end;
uses' e math ekle.
functiona gelen str 1234,748548585 gibi bir real sayının string hali,kr ise
decimal karakterin kaç karakter olacağını belirleyen değişkendir.
bu decimal hane atılan kısmın 5 ten yukarısını 1 ' e aşağısını ise 0 yuvarlar.
Umarım işine yarar.
Bilginin sınırı öğrenmenin yaşı yoktur.
rapsodim
Üye
Mesajlar: 147
Kayıt: 15 Eki 2003 03:52

Mesaj gönderen rapsodim »

Arkadaşlar ilginize tşkr ederim.Ben aşağıdaki yöntemi buldum.Benim gibi arayan var ise yardımcı olur umarım.
Örneğin : bu ifadenin 22,5486 sonuçu 22,55 olur.ondalık 3 hane olması içinde 1000 ile çarpıp round etmek ve çıkan sonucu 1000 e bölmek.


Table1.FieldByName('tutar').AsFloat := round((Table1.FieldByName('tutar').AsFloat)*100);
Table1.FieldByName('tutar').AsFloat := (Table1.FieldByName('tutar').AsFloat)/100;
rapsodim
Üye
Mesajlar: 147
Kayıt: 15 Eki 2003 03:52

Mesaj gönderen rapsodim »

arkadaşlar cıkan sonuc bazen 55,1 oluyor bunu nasıl 55,10 yapılabılır?
veya tam sayı cıkıyor mesela 55 gibi bunuda 55,00 gibi
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Kod: Tümünü seç

DisplayFormat
diye bir araştırın, cevabı bulacaksınız ....
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

string çevirmelerde..

Kod: Tümünü seç

FormatToStrF(123,456, ffNumber, 12, 2)
display formatta..

Kod: Tümünü seç

###.#0
DeveloperToolKit

..::|YeşilMavi|::..
AraGorN
Üye
Mesajlar: 28
Kayıt: 30 Eyl 2003 02:02
Konum: Bornova - İzmir
İletişim:

Mesaj gönderen AraGorN »

lazio yazdı:string çevirmelerde..

Kod: Tümünü seç

FormatToStrF(123,456, ffNumber, 12, 2)
display formatta..

Kod: Tümünü seç

###.#0
Display Formatta #in yeri boş kalıyor eğer denk gelen rakam 0 sa. ve yukarıdaki formatta ,55 gibi bir sonuç çıkıyor ki kullanıcı için anlaşılmaz bir durum bu onun yerine 0,55 çıkartmak için display formatı #,##0.00 olarak vermenizi öneriyorum.
Cevapla