none
Convert.ToDecimal RRS feed

  • Soru

  • txt_odeme.Text  alanına 0.86 yazıyorum. 

    decimal   odeme =   Convert.ToDecimal( txt_odeme.Text.Trim() );

    odeme 86 döndürüyor.. 

    Nasıl çözerim.. 

    Teşekkürler.. 

    9 Ağustos 2016 Salı 22:04

Yanıtlar

  • en-US olmayan bir işletim sisteminde, imperial kültüründe değer yazıyorsun da ondan. Muhtemelen işletim sistemin tr-TR, nokta tr-TR kültüründe binler ayracıdır. ToDouble de binler ayracı olarak işleme sokuyor. Senin kafandakinin en-US olduğunu bilmiyor.

    Convert.ToDecimal(txt_odeme.Text.Trim(), System.Globalization.CultureInfo.InvariantCulture)
    Bu kültür bağımsız olarak çevirir.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    9 Ağustos 2016 Salı 22:39
    Moderatör

Tüm Yanıtlar

  •  

    decimal   odeme =     decimal.Parse(txt_odeme.Text.Trim(), CultureInfo.InvariantCulture);

    şeklinde çözülüyor. 

    9 Ağustos 2016 Salı 22:33
  • en-US olmayan bir işletim sisteminde, imperial kültüründe değer yazıyorsun da ondan. Muhtemelen işletim sistemin tr-TR, nokta tr-TR kültüründe binler ayracıdır. ToDouble de binler ayracı olarak işleme sokuyor. Senin kafandakinin en-US olduğunu bilmiyor.

    Convert.ToDecimal(txt_odeme.Text.Trim(), System.Globalization.CultureInfo.InvariantCulture)
    Bu kültür bağımsız olarak çevirir.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    9 Ağustos 2016 Salı 22:39
    Moderatör
  • decimal odeme_1 = decimal.Parse(txt_odeme.Text.Trim(), CultureInfo.InvariantCulture);

    decimal odeme_2 = Convert.ToDecimal(txt_odeme.Text.Trim(), System.Globalization.CultureInfo.InvariantCulture);

    çok ilginç 

    txt_odeme.Text  ' e     0.86  yazınca  

    odeme_1 =86

    odeme_2 =86  sonucunu veriyor.. 

    Bu virgül ile nokta ile mi ilgili ? 

    9 Ağustos 2016 Salı 22:55
  • ikiside 0,86 olur. 86 olmaz.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    9 Ağustos 2016 Salı 23:04
    Moderatör
  • Yeni farkettim  

    devexpress textedit  kullanmışım


    9 Ağustos 2016 Salı 23:29
  • farketmez ki, string string dir. İster textedit ten gelsin ister textbox tan. Sen denerken gözünden kaçan birşey oldu galiba ondan 86 gördün, yoksa hep 0,86 olur sonuç.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com


    10 Ağustos 2016 Çarşamba 06:42
    Moderatör
  • Çok teşekkür ederim..

    Garip şeyler oluyor debug ederken..

    decimal.Parse(txt_odeme.Text.Replace(".", ",")) 

    Çözüyor. Ama iyi çözüm olmadığını biliyorum.. 

    10 Ağustos 2016 Çarşamba 08:51
  • Çünkü en baştan bir yanlış yapıyorsunuz. Kullanıcının girdiği metne müdahale etmeye çalışıyorsunuz. Kontrolleri BindingSource a bağlasanız zaten Validation hatalı bilgi girilmesini engelleyecektir. WebForms, WinForms bu mantıkla tasarlanmış.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    10 Ağustos 2016 Çarşamba 09:11
    Moderatör