PDA

Tam Sürümünü Görmek İçin : float sorunu


blackcrow
10/03/2007, 20:07
3 sorum olacak

1.database de fiyat verisi float.yani 4,00 gibi kaydediyor.fakat ben bunları dbgride cekerken veya edite cekerken hep bunlar 4 olarak gözüküyor.birde müsteri edite bilgi girerken girdigi bilgiyi irek float yapabiliyomuyuz.yani ytl cinci yazmam gerekiyor.mesela kullanıcı 2 yazdıgında o 2,00 yapacak.

2.float bir sayı ile integer bi sayıyı carptıgımda hata alıyorum.(mesela 3.2 ile 2 yi carptıgımda hep hata veriyor.ama 3.2 ile 5 carparsam hata vermiyor.sonuc tamsayı olunca hata vermiyor)

3.edit e girilen degerin integer olup olmadıgını ögrenmeye calsıyorum if döngüsüyle fakat sonuc yine hüsran.Asagıdaki döngü yanlıs mı?
if(StrToInt(Edit1->Text)=true){
showMessage("sayı integer");
}


BetulSahin
10/03/2007, 21:22
3 sorum olacak
3.edit e girilen degerin integer olup olmadıgını ögrenmeye calsıyorum if döngüsüyle fakat sonuc yine hüsran.Asagıdaki döngü yanlıs mı?
if(StrToInt(Edit1->Text)=true){
showMessage("sayı integer");
}


Bu kod edit e sayı girdiğin sürece çalışıyor.Ama string girmeyi deneme :)
int iDegisken;
iDegisken=StrToInt(Edit1->Text);
if(iDegisken)
ShowMessage("integer girdiniz!");

blackcrow
10/03/2007, 21:29
sorun orada iste.programcıklıkta ihtimaller gözardı edilmemeli.vatandas sırf gıcıklıgına veya unutkanlıkla oraya string bi deger girdigine pro hata verecek.bunun önüne gecmem gerekiyor.

necipakif
11/03/2007, 14:17
blackcrow, Öncelikle StrToFloat,StrToInt,FloatToStr gibi benzer dönüşüm fonksiyonlarının kullanımlarını iyi şekilde çözmelisin. Ya da kullandığın bileşenleri(komponentleri) değiştirip bu işleri senin yerine halleden bileşenler bulmanı tavsiye ederim. DbGrid' te ki sorun da sanırım hücresel gösterim özelliklerinden(properties) halledilebiliyor. Ya da sürekli kullnacağın bir fonksiyon yazabilirsin ya da bileşen.
kullanıcı 2 yazdıgında o 2,00 yapacak.Bu cümlene basit bir çözüm olabilir:)

AnsiString __fastcall TForm1::Convert(AnsiString inStr)
{
AnsiString outStr;
try
{
if (StrToInt(inStr))
{
outStr = inStr+",00";
return outStr;
}
}
catch(...){

}
}

Selâmetle....

necipakif
11/03/2007, 14:18
blackcrow,Ya şunları da söylemek gerekir, buna değişik çözümlerde getirilebilir. İlk aklıma gelenler bunlardı.

Selâmetle...

mr1yh1
11/03/2007, 14:45
3 sorum olacak

2.float bir sayı ile integer bi sayıyı carptıgımda hata alıyorum.(mesela 3.2 ile 2 yi carptıgımda hep hata veriyor.ama 3.2 ile 5 carparsam hata vermiyor.sonuc tamsayı olunca hata vermiyor)


çarptığın için değil
çarpımın sonucunu onu tutamayacak birşeye atadığın için hata alıyorsun.
int a = (float) b;
gibi birşey yapıyorsun.
integer, float verisini kayıpsız tutamaz.

Orn
22/03/2007, 13:49
çarptığın için değil
çarpımın sonucunu onu tutamayacak birşeye atadığın için hata alıyorsun.
int a = (float) b;
gibi birşey yapıyorsun.
integer, float verisini kayıpsız tutamaz.

aynı sorunu bız de cok yasadık cozumu tam oalrak bu