Дважды. TryParse () входной разделитель десятичного числа, отличающийся, чем системный разделитель десятичного числа

У меня есть источник XML, который использует точку (". "), поскольку десятичный разделитель и я анализируем это в системе, которая использует запятую ("") как десятичный разделитель.

В результате значение 0,7 анализируется с Double.TryParse или Double.Parse как 7000000.

Что мои опции состоят в том, чтобы проанализировать правильно? Один из них должен заменить точки в источнике с запятыми с String.Replace('.', ',') но я не думаю, что мне нравится это очень.

10
задан hkutluay 1 April 2015 в 12:54
поделиться

3 ответа

Стандарт XML явно описывает форматирование дат, чисел и т. Д. Это помогает гарантировать, что XML не зависит от платформы и совместим. Взгляните на использование XmlConvert для данных xml.

double value = XmlConvert.ToDouble(stringValue);
22
ответ дан 3 December 2019 в 13:17
поделиться

Это выполняет свою работу:

    string test = "0.7";
    Assert.Equal(0.7, Double.Parse(test, NumberStyles.Float, CultureInfo.InvariantCulture));
17
ответ дан 3 December 2019 в 13:17
поделиться

double.TryParse имеет перегрузку, принимающую IFormatProvider. Используйте соответствующий CultureInfo, в вашем случае можно использовать CultureInfo.InvariantCulture.

12
ответ дан 3 December 2019 в 13:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: