У меня есть источник XML, который использует точку (". "), поскольку десятичный разделитель и я анализируем это в системе, которая использует запятую ("") как десятичный разделитель.
В результате значение 0,7 анализируется с Double.TryParse
или Double.Parse
как 7000000.
Что мои опции состоят в том, чтобы проанализировать правильно? Один из них должен заменить точки в источнике с запятыми с String.Replace('.', ',')
но я не думаю, что мне нравится это очень.
Стандарт XML явно описывает форматирование дат, чисел и т. Д. Это помогает гарантировать, что XML не зависит от платформы и совместим. Взгляните на использование XmlConvert для данных xml.
double value = XmlConvert.ToDouble(stringValue);
Это выполняет свою работу:
string test = "0.7";
Assert.Equal(0.7, Double.Parse(test, NumberStyles.Float, CultureInfo.InvariantCulture));
double.TryParse
имеет перегрузку, принимающую IFormatProvider. Используйте соответствующий CultureInfo, в вашем случае можно использовать CultureInfo.InvariantCulture.