ondalık kısmı ıkı hane nasıl yapılır
ondalık kısmı ıkı hane nasıl yapılır
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.
şeklinde bir ifadem var bunun sonucunu virgülden sonra iki hane ile kısıtlamak istiyorum nasıl yapabilirim.teşekkür ederim.
bunu o alanı tablonda gösterdiğin fieldin propertiesideki displayformat ile yapsanız daha kolay
0.00 yaparsanız onu olur.

.-.-.-.-.-.-.-. ^_^
-
- Kıdemli Üye
- Mesajlar: 574
- Kayıt: 01 Şub 2004 12:29
- Konum: Erdemli - MERSİN
-
- Kıdemli Üye
- Mesajlar: 574
- Kayıt: 01 Şub 2004 12:29
- Konum: Erdemli - MERSİN
Merhaba kendi kullandığım kodu yazıyorum.
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.
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;
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.
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;
Ö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;
-
- Kıdemli Üye
- Mesajlar: 574
- Kayıt: 01 Şub 2004 12:29
- Konum: Erdemli - MERSİN
Kod: Tümünü seç
DisplayFormat
string çevirmelerde..
display formatta..
Kod: Tümünü seç
FormatToStrF(123,456, ffNumber, 12, 2)
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.lazio yazdı:string çevirmelerde..display formatta..Kod: Tümünü seç
FormatToStrF(123,456, ffNumber, 12, 2)
Kod: Tümünü seç
###.#0