Merhaba Arkadaşlar bi sorunum var
bir fatura programı yaptım program kdv hesaplarken örneğin " 16,5346" şeklinde çıkıyo veya " 1,337" gibi değerler çıkıyor ben virgülden sonraki ondalık değerlerini tek hane almak istiyorum örneğin 16,5 veya 1,3 şeklinde bunu nasıl yapabilirim
birde genel toplamı hem sayısal olarak hemde fatura üstüne metinsel olarak yazdırabilirmiyim örnek
"139,5 TL" " YüzOtuzDokuz Lira 50 Kuruş" şeklinde
KDV Sorunu
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: KDV Sorunu
KDV hepimizin sorunu
Soruya gelince parasal ifadeler için virgülden sonra çift hane olmalı...
16,53 olarak dönmesi lazım

Kod: Tümünü seç
float:=16,5346;
showmessage(FormatFloat('#,##0.00',float));
Re: KDV Sorunu
diğer soru için ise, nette örnek çoktur ama bi ara şöyle bir şey yazmıştım
kullanımı
Kod: Tümünü seç
function Rakam(Sayi:Int64):String;
const n=9;
Basamak:array[0..n]of String=('','Bin','Milyon','Milyar','Trilyon','Katrilyon','Kentrilyon','Sekstilyon','Septilyon','Oktilyon');
Onlar:array[0..n]of String=('','On','Yirmi','Otuz','Kırk','Elli','Altmış','Yetmiş','Seksen','Doksan');
Birler:array[0..n]of String=('','Bir','İki','Üç','Dört','Beş','Altı','Yedi','Sekiz','Dokuz');
var i:Byte; UcHane:Word; Yed,UcluHane:String; HangiBasamak:Byte;
Negatif,BasamakYaz:Boolean;
function Modu(var Sayisi:Word):Byte;
begin
Result:=Sayisi mod 10;
Sayisi:=Sayisi div 10;
end;
begin
if Sayi=0 then
Result:=''
else begin
Negatif:=Sayi<0;
if Negatif then Sayi:=-Sayi;
Result:='';
HangiBasamak:=0;
while Sayi>0 do begin
UcHane:=Sayi mod 1000; Sayi:=Sayi div 1000;
BasamakYaz:=UcHane>0;
repeat
UcluHane:='';
if ((HangiBasamak=1) and (UcHane=1)) then Break;//sadece bin yazılacaksa
i:=Modu(UcHane); UcluHane:=Birler[i]; //3 hanenin 1. si
i:=Modu(UcHane); UcluHane:=Onlar[i]+' '+UcluHane; //3 hanenin 2. si
i:=Modu(UcHane);
if i>0 then Yed:='Yüz' else Yed:='';
if i>1 then Yed:=Birler[i]+' '+Yed;
UcluHane:=Yed+' '+UcluHane;//3 hanenin 3. sü
until True;
if BasamakYaz then Result:=UcluHane+' '+Basamak[HangiBasamak]+' '+Result;
inc(HangiBasamak);
end;
if Negatif then Result:='Eksi'+Result
else //Delete(Result,1,1);
end;
end;
function ParaOku(Sayi:Real):String;
var
Tam,Ondalik:String; TamSayi:Int64;
begin
Tam:='TL';
Ondalik:='Kr';
TamSayi:=Trunc(Sayi);
Result:=Rakam(TamSayi)+' '+Tam;
TamSayi:=Round((Sayi-TamSayi)*100);
if TamSayi>0 then
Result:=Result+' '+Rakam(TamSayi)+' '+Ondalik;
end;
Kod: Tümünü seç
showmessage(ParaOku(15.50));
bazen yükselmek için önce dibi görmek gerekir...
forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...
