I have a project that reads some data from xml file
Convert.ToDouble metod works wrong.
it converts 0.05 as 5.
is there any idea to solve this problem?
this is my ReadDataFromXml method:
public static List<double> XmldenTabanDegerleriniOku(string ID)
{
string ayarDir = System.Environment.CurrentDirectory + "\\Ayarlar";
string Dosya = ayarDir + "\\YuzeyBoyutlari.xml";
XmlDocument doc = new XmlDocument();
doc.Load(Dosya);
XmlNodeList holList = doc.GetElementsByTagName("HOL");
List<double> tabanDegerleri = new List<double>();
foreach (XmlNode node in holList)
{
XmlElement holElement = (XmlElement)node;
if (node.Attributes["ID"].Value == ID) {
double uzunluk =Convert.ToDouble(holElement.GetElementsByTagName("uzunluk")[0].InnerText.Replace('.',','));
double genislik =Convert.ToDouble(holElement.GetElementsByTagName("genislik")[0].InnerText.Replace('.',','));
double cizgilerArasiMesafe = Convert.ToDouble(holElement.GetElementsByTagName("cizgilerArasiMesafe")[0].InnerText.Replace('.', ','));
tabanDegerleri.Add(uzunluk);
tabanDegerleri.Add(genislik);
tabanDegerleri.Add(cizgilerArasiMesafe);
break;
}
}
return tabanDegerleri;
}
Don’t use
Convert.ToDoublethen: useXmlConvert.ToDouble. I believe that effectively uses the invariant culture (as XML documents conveying data shouldn’t be culture-specific in that sense).EDIT: I hadn’t noticed that you were manually replacing ‘.’ with ‘,’ – so when you say that “it is converting 0.05 as 5” you really mean “it is converting 0,05 as 5”. You should use
XmlConvertand stop messing with the data yourself.