Arama butonu
Bu konudaki kullanıcılar: 1 misafir
11
Cevap
808
Tıklama
0
Öne Çıkarma
double değişkenlerle sorgu c#
A
12 yıl
Yüzbaşı

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


Bu mesaja 2 cevap geldi.
S
12 yıl
Çavuş
Konu Sahibi

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 :/



H
12 yıl
Yüzbaşı

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?


Bu mesaja 1 cevap geldi.
£
12 yıl
Yüzbaşı

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 >
Bu mesaja 1 cevap geldi.
S
12 yıl
Çavuş
Konu Sahibi

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 ;)



S
12 yıl
Çavuş
Konu Sahibi

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


Bu mesaja 1 cevap geldi.
£
12 yıl
Yüzbaşı

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 ?


Bu mesaja 1 cevap geldi.
S
12 yıl
Çavuş
Konu Sahibi

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


Bu mesaja 1 cevap geldi.
£
12 yıl
Yüzbaşı

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.


Bu mesaja 1 cevap geldi.
W
12 yıl
Binbaşı

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ı


Bu mesaja 1 cevap geldi.
G
12 yıl
Binbaşı

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.



J
2 yıl
Er

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




Bu mesajda bahsedilenler: @alm.oz
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.