C# Float Sorunu

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    camarade
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek

    Arkadaşlar, sorunu araştırdım fakat henüz çözemedim.

    Bir tane textbox var bundan gelen değeri request.form ile alıyorum

    float fltFiyati = 0;

    String strFiyati = Request.Form["fiyati"];

     

    if (String.IsNullOrEmpty(strFiyati) == true)

    {

     fltFiyati = float.Parse(strFiyati)

    }

    strFiyati = fltFiyati.ToString();

    ... Devam eden işlemler vs..

    Veritabanına eklerken

    SqlCommand cmdSQL = new SqlCommand("INSERT INTO tblDemirbaslar (urun_adi, cinsi, yeri, fiyati, aciklama) VALUES ('" + strUrun_Adi + "', '" + strCinsi + "', '" + strYeri + "', '" + strFiyati + "', '" + strAciklama + "')", bag);

     

    Fakat hata vermektedir.

    Error converting data type varchar to float.


    Yardımcı olabilir misiniz?

     


    Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    insert kodundaki strFiyati nın önündeki ve arkasındaki tek tırnakları silip dener misin


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    camarade
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek

    Yok hocam, sql hatası verdi.

    Özetle, float türünde gelen bir değeri sql'de float alanına girmek istiyorum.


    Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    hocam teamviewer id pass yolla özelden bakayım


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Gizem
    sLeymN
    sLeymN's avatar
    Kayıt Tarihi: 31/Mart/2008
    Erkek
    ontedi bunu yazdı

    Yok hocam, sql hatası verdi.

    Özetle, float türünde gelen bir değeri sql'de float alanına girmek istiyorum.

    abi sen böyle yapmamışsın ki ama, 

    float ı stringe çevirip db ye string olarak kaydetmişsin. 


    Cehennemin dibine kadar yolum var daha.. || Nasılsa her yalnız kendine sürgündür Asmera unutma.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Underground
    Underground's avatar
    Kayıt Tarihi: 01/Ekim/2007
    Erkek

    edit


    Herkesin işine yaradığın kadar iyisindir Bu Hayatta!
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    attackatak
    attackatak's avatar
    Kayıt Tarihi: 06/Mayıs/2007
    Erkek

    parameter kullan hocam. hatta bunu alışkanlık haline getir.

    ayrıca eğer yazı giriyorsan ' işaretini kullan, değilse kullanma.

    db de fiyati bölümünün değişkenini kontrol et.

    str fiyatında "." kullanıyorsa virgül yap, virgül kullanılıyorsa nokta yap.

    parameter kullanırsan da bu tür şeyleri kendi halleder ;)

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    çevirmeyi şu şekilde yap muhtemelen nokta-virgülle ilgili bir hata var 

    fltFiyati = float.Parse(strFiyati CultureInfo.InvariantCulture);

    ve sql kodunda da strfiyati yerine fltFiyati  nı kullan (ama dediğim gibi tek tırnaklar olmayacak çünkü ifade metin türü değil)

    bir de bu işi parametrelerle yapman daha kolay ve sağlıklı olur

     


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    furkan5816
    furkan5816's avatar
    Kayıt Tarihi: 25/Mayıs/2012
    Erkek

    fltFiyati = float.Parse(strFiyati) --> burada aldığın değeri float a çevirmişsin 

    strFiyati = fltFiyati.ToString();  --> burada tekrar float değerini stringe çevirip bu değeri veritabanına yollamışsın

    Eğer veritabanında float olarak belirtiysen 

    "INSERT INTO tblDemirbaslar (urun_adi, cinsi, yeri, fiyati, aciklama) VALUES ('" + strUrun_Adi + "', '" + strCinsi + "', '" + strYeri + "', '" + fltFiyati + "', '" + strAciklama + "')"

    olarak 

    varchar olarak belitrtiysen 

    "INSERT INTO tblDemirbaslar (urun_adi, cinsi, yeri, fiyati, aciklama) VALUES ('" + strUrun_Adi + "', '" + strCinsi + "', '" + strYeri + "', '" + strFiyati + "', '" + strAciklama + "')"

     

    olarak kullanmalısın.

    yani hatayı veritabanına değeri string olarak yolladığın için alıyorsun

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    camarade
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek
            float fltFiyati = 0;
            if (String.IsNullOrEmpty(strFiyati) == false)
            {
                strFiyati = strFiyati.Replace(",", ".");
                fltFiyati = float.Parse(strFiyati, System.Globalization.CultureInfo.InvariantCulture);
            }
            Response.Write(fltFiyati);

    Şimdi arkadaşlar. Gelen değeri ekrana yazdırmak istediğimde Şöyle bir şey karşıma çıkıyor

    Mesela metin kutusuna 14.78 gibi bir şey yazıyorum sonuç olarak ekranda bana 14,78 olarak çıktı vermektedir.

    Oradaki replace işe yaramıyor galiba.

     

     


    Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    hocam oradaki cultur olayı senin bilgisayarında yüklü olan dilin özelliğine göre şekil alır. biz tam olmayan sayılar için virgül kullandığımız için virgül görüyoruz. eğer bir amerkalı deneseydi nokta görürdü. kodda problem yok. illa ekrana virgül yazdıracaksan oradaki parse ı sil


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
Toplam Hit: 2138 Toplam Mesaj: 12