Şimdi Ara

double değişkenlerle sorgu c#

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
13
Cevap
0
Favori
808
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Double değişkenlerle neden sorgu yapmaya çalışıyorum ama olmuyor mesela;
    string xx="30.55315392";
    double x=convert.todouble(xx);
    if(x==30.55315392)
    {
    messagebox.show("DH");
    }

    neden çalışmıyor :/



  • demekki convert ettiğinde sayı 30.55315392 olmuyor. x değişkenini karşılaştırma yapmadan önce bi yere yazdır bak hangi sayı olduğuna.
    Ayrıca çevirme yapmasan dahi double/float değişkenler her zaman atadığın sayıyı almayabiliyorlar. Mesela float a = 4.0000010; verdin diyelim. 4.0000009 olabilir.
    Hem sen neden bu kadar hassas bir karşılaştırma yapıyosun. Yazılımda gerçekten buna ihtiyacın olduğuna emin misin?
  • quote:

    Orijinalden alıntı: SuMa

    Double değişkenlerle neden sorgu yapmaya çalışıyorum ama olmuyor mesela;
    string xx="30.55315392";
    double x=convert.todouble(xx);
    if(x==30.55315392)
    {
    messagebox.show("DH");
    }

    neden çalışmıyor :/

    hasan'ında dediği gibi bu kadar ince sayılar kullanman yanlış.

    Önce şunu dene.. Ayrıca büyük-küçük harflere dikkat etmiyorsun.

     
    string xx="30.55315392";
    double x=Convert.ToDouble(xx);
    if(x==30.55315392)
    {
    MessageBox.Show("DH");
    }



    Eğer bu olmazsa, 2.satırdaki yeri şöyle dğeiştir. Kusura bakma burada şu an Visual Studio yok :(.
    double x = Convert.ToDouble(xx.ToString());



    < Bu mesaj bu kişi tarafından değiştirildi £XE -- 23 Ağustos 2012; 14:05:47 >
  • quote:

    Orijinalden alıntı: hasan1980125

    demekki convert ettiğinde sayı 30.55315392 olmuyor. x değişkenini karşılaştırma yapmadan önce bi yere yazdır bak hangi sayı olduğuna.
    Ayrıca çevirme yapmasan dahi double/float değişkenler her zaman atadığın sayıyı almayabiliyorlar. Mesela float a = 4.0000010; verdin diyelim. 4.0000009 olabilir.
    Hem sen neden bu kadar hassas bir karşılaştırma yapıyosun. Yazılımda gerçekten buna ihtiyacın olduğuna emin misin?

    navigasyon sistemi yapıyorum koordinatlarda hassas olmak zorundayım ;)
  • quote:

    Orijinalden alıntı: £XE

    quote:

    Orijinalden alıntı: SuMa

    Double değişkenlerle neden sorgu yapmaya çalışıyorum ama olmuyor mesela;
    string xx="30.55315392";
    double x=convert.todouble(xx);
    if(x==30.55315392)
    {
    messagebox.show("DH");
    }

    neden çalışmıyor :/

    hasan'ında dediği gibi bu kadar ince sayılar kullanman yanlış.

    Önce şunu dene.. Ayrıca büyük-küçük harflere dikkat etmiyorsun.

     
    string xx="30.55315392";
    double x=Convert.ToDouble(xx);
    if(x==30.55315392)
    {
    MessageBox.Show("DH");
    }



    Eğer bu olmazsa, 2.satırdaki yeri şöyle dğeiştir. Kusura bakma burada şu an Visual Studio yok :(.
    double x = Convert.ToDouble(xx.ToString());



    demin arkadaşa da yazdığım gibi navigasyon sistemi yapıyorum koordinatlarla çalışıyorum normalde bu sayılar daha uzun ben bu kadara indirebildim dahası kabul edilmiyor.neden yanlış olsunki? izmiri balıkesir diyemi alsın sonra

    büyük küçük harfe direk forma yazdığım için dikkat etmedim zaten sorunumuda hallettim. yinede tşkler




  • quote:

    Orijinalden alıntı: SuMa

    quote:

    Orijinalden alıntı: £XE

    quote:

    Orijinalden alıntı: SuMa

    Double değişkenlerle neden sorgu yapmaya çalışıyorum ama olmuyor mesela;
    string xx="30.55315392";
    double x=convert.todouble(xx);
    if(x==30.55315392)
    {
    messagebox.show("DH");
    }

    neden çalışmıyor :/

    hasan'ında dediği gibi bu kadar ince sayılar kullanman yanlış.

    Önce şunu dene.. Ayrıca büyük-küçük harflere dikkat etmiyorsun.

     
    string xx="30.55315392";
    double x=Convert.ToDouble(xx);
    if(x==30.55315392)
    {
    MessageBox.Show("DH");
    }



    Eğer bu olmazsa, 2.satırdaki yeri şöyle dğeiştir. Kusura bakma burada şu an Visual Studio yok :(.
    double x = Convert.ToDouble(xx.ToString());



    demin arkadaşa da yazdığım gibi navigasyon sistemi yapıyorum koordinatlarla çalışıyorum normalde bu sayılar daha uzun ben bu kadara indirebildim dahası kabul edilmiyor.neden yanlış olsunki? izmiri balıkesir diyemi alsın sonra

    büyük küçük harfe direk forma yazdığım için dikkat etmedim zaten sorunumuda hallettim. yinede tşkler

    Önemli değil.. Keşke yazsaydın navigasyon sistemleri yazıyorum diye..
    Hep merak etmişimdir. Algoritması nasıl bu sistemelrin ?




  • Karmakarışık...giriştik bi kere bu işe bakalım sonumuz hayrolsun
  • quote:

    Orijinalden alıntı: SuMa

    Karmakarışık...giriştik bi kere bu işe bakalım sonumuz hayrolsun

    Evet internetten baktımda cidden çok karışık bir iş.
    Allah yardımcın olsun.




  • bilgisayarının region'uyla alakalı bu durum bilgisayarın bölgesi türkiye ise para birimi ondalık sayı birimi farklı oluyor mesela sen "30.0001213" diye string'i double a çevirdiğinde 30,0001213 diye çeviriyor o yüzden eşitlerken sıkıntı yaşıyosun
  • Koordinatlar ve ince ayrıntıyla uğraşıyorsan direk string üzerinden çalış veya;
    KOORDİNATLARI hafızada tutarken katsayılarla çarp örneğin,
    30.55315392 koordinatını hafızaya atarken 1000 ile çarparsan veya daha büyük bir katsayıyla virgülden sonraki kısım azalacağı için hata payı azalır.
    30553.15392

    Yani önünde iki seçenek var;
    1- string
    2- Katsayı
  • if(x.Equals(30.55315392)){

    }

    şeklinde dene, navigasyon sistemlerinde yaklaşım aralığı kullanılır. sayın 30.55315392 iken karşılaştırma aralığın 2 basamak sağdan kırpıp bir altı bir üstü ile test etmelisin. 30.553154 ve 30.553152 aralığında mı kontrol edersin. Zaten GPS sıfır hata ile okuma yapmaz. Bu kadar hassasiyetli yazılım seni sonuca götürmez.
  • alm.oz A kullanıcısına yanıt

    Yıllar sonra hortlatıyorum. Region değiştirince düzeldi. English (US) yaptım.

  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.