virgüllü sayı sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
seamoon
Üye
Mesajlar: 37
Kayıt: 08 Kas 2005 12:43
Konum: İstanbul

virgüllü sayı sorunu

Mesaj gönderen seamoon »

var
sayi1,sayi2,bol,sonuc:integer;
kdv1:string;
begin
sayi1:=strtoint(combobox2.Text);
sayi2:=strtoint(edit6.Text);
bol:=100;
sonuc:=muldiv(sayi1,sayi2,bol);
kdv1:=inttostr(sonuc);
edit7.Text:=kdv1;
end;


yukardaki kodlarla iki sayıyı çarpıp üçüncüye böldürüyorum
hata vermeden işlemi yapıyor.

ancak edite sayıyı virgüllü girince (500,25 gibi) hata veriyor

anladığım kadarıyla integer kullandığım için yani tam sayı olayı

sorum şu : integer yerine ne kullanabilirim ve nasıl ceviririm yani string i real'e veya real'i string'e?
seamoon
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

Edit6'ya mı giriyorsun virgüllü sayıyı? Ama orada Integer kullanmışsın. Integer yerine Extended, double, vs.. gibi kayan nokta tipleri kullanmalısın. IntToStr ve StrToInt gibi fonksiyonlar yerine de FloatToStr, StrToFloat kullanmalısın.

kolay gelsin.
seamoon
Üye
Mesajlar: 37
Kayıt: 08 Kas 2005 12:43
Konum: İstanbul

Mesaj gönderen seamoon »

evet başka bir değişkenle (extended gibi) çözeceğimi anladım ama anladığım kadarıyla muvdiv fonksiyonu integer kullanıyor.

dolayısıyla sorunu bir türlü aşamadım. bunları nasıl çeviririm.

yapmak istediğim ondalıklı sayıyla matematik işlemi
500,25*250,12/100 gibi

örnek verebilecek, yardım edecek kimse yok mu?
seamoon
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
şartmı canım muldiv le yapman.

Kod: Tümünü seç

a:=sayi1*sayi2/sayi3;
kolay gelsin
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Hocam sorunu ya anlayamadım ya da yanlış anladım. Anladığım kadarıyla şu kadarını yazabilirim...

- Amacın iki sayıyı çarpıp üçüncü sayıya böldürmek ise MulDiv'e ihtiyacın neden olsun ki, direkt kodda çarp ve böl.

- İllaki de fonksiyon kullanıcam dersen aşağıda yeni bir fonksiyon tanımı var. Programına ekle ...

Kod: Tümünü seç

Function MyMulDiv(Sayi1, Sayi2, Sayi3 : Extended):Extended;
begin
  Result := Sayi1 * Sayi2 / Sayi3;
end;
- Kullanımı ise aynı eskisi gibi ama tip olarak Integer değil Extended kullanacaksın. Dolayısı ile StrToInt veya IntToStr yerine FloatToStr veya StrToFloat kullanacaksın...

Kod: Tümünü seç

var
  sayi1, sayi2,
  bol, sonuc  : Extended;
  kdv1   : string;
begin
  sayi1 := strtoFloat(combobox2.Text);
  sayi2 := strtoFloat(edit6.Text);
  bol   := 100;
  sonuc := Mymuldiv(sayi1, sayi2, bol);
  kdv1  := Floattostr(sonuc);
  edit7.Text:=kdv1;
end;
En son mrmarman tarafından 21 Ara 2005 10:29 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Resim
Resim ....Resim
seamoon
Üye
Mesajlar: 37
Kayıt: 08 Kas 2005 12:43
Konum: İstanbul

Mesaj gönderen seamoon »

aslangeri

şartmı canım muldiv le yapman.
Kod:

a:=sayi1*sayi2/sayi3;

demişsin
ya tabiki şart değil ama mesela yukarda verdiğin örnekte
a, sayi1, sayi2 ve sayi3 ü Extended olarak atadığımızı farzedelim

edit'e nasıl aktarıcam bunu bilmiyorum :oops:
seamoon
seamoon
Üye
Mesajlar: 37
Kayıt: 08 Kas 2005 12:43
Konum: İstanbul

Mesaj gönderen seamoon »

mrmcop

çok teşekkür ederim istediğim oldu
:D

ama affına sığınarak bir şey daha :?:
tam olarak yapmak istediğim kdv hesaplamaktı
500,25*18/100 gibi
cevabında yazdığın fonksiyonla bu oldu ama
500,25*18/100'ün sonucunu 90,045 olarak döndürüyo
YKR olayında iki hane var bilindiği üzere ,045 i nasıl yuvarlayabilirim :oops: :oops: :?
seamoon
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Valla yuvarlama ile hiç uğraşmadım. Kuruguladığım sistem her zaman gerekli yuvarlamayı kendiliğinden yapıyor...

Örnek :

Kod: Tümünü seç

Var
  a,b: Extended;
begin
  a := 90.045;
  b := StrToFloat(FormatFloat('0.00', a));
  ShowMessageFmt('%f', [b]);
end;
Resim
Resim ....Resim
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

muldiv nedir yahu? :D
seamoon
Üye
Mesajlar: 37
Kayıt: 08 Kas 2005 12:43
Konum: İstanbul

Mesaj gönderen seamoon »

coderlord yazdı:muldiv nedir yahu? :D
muldiv iki sayıyı çarpıp üçüncüye bölen bir matematiksel fonksiyon

mesela
muldiv(a,b,c);
dediğimizde (a*b/c) yi sonuç olarak döndürüyor


bu arada mrmcop hocam verdiğiniz örnek dediğiniz gibi yuvarlıyo
Var
a,b: Extended;
begin
a := 90.045;
b := StrToFloat(FormatFloat('0.00', a));
ShowMessageFmt('%f', );
end;

peki
a:=90.045 yerine a:=strtofloat(edit6.text); dediğimde neden hata veriyor?
seamoon
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

seamoon yazdı:
coderlord yazdı:muldiv nedir yahu? :D
muldiv iki sayıyı çarpıp üçüncüye bölen bir matematiksel fonksiyon
Lüzumsuz bir fonksiyonmuş. Borland nasıl koymuş bunu VCL'e?
seamoon
Üye
Mesajlar: 37
Kayıt: 08 Kas 2005 12:43
Konum: İstanbul

Mesaj gönderen seamoon »

hocam kusura bakma yazdığın örnekte sorun yok ben bi yerde yanlış yapmışım :oops:

sonunda problemimi tamamen çözdüm
ellerinize sağlık...
iyi çalışmalar
seamoon
Cevapla