Convert.ToDouble выбрасывает System.FormatException по неизвестной причине - PullRequest
2 голосов
/ 19 декабря 2011

Я анализирую xml-файл и пытаюсь присвоить значение, которое я считываю из xml-файла, в двойную переменную.

Вот как выглядит мой код:

double someDouble = Convert.ToDouble(someString);

проблема здесь в том, что при выполнении этой строки кода я получаю

Произошло необработанное исключение типа 'System.FormatException' в mscorlib.dll

Дополнительная информация: строка вводабыл не в правильном формате.

Когда я отлаживаю, я вижу, что значение someString равно "45.00000000" в представлении "Локальные".

Насколько язнать Convert.ToDouble поддерживает такое преобразование строк в double.

ПРИМЕЧАНИЕ : просто чтобы убедиться, что я также пытался

double someDouble = Convert.ToDouble(someString.Trim('"'));

Ответы [ 4 ]

12 голосов
/ 19 декабря 2011

У меня отлично работает.

Мои навыки психической отладки говорят мне, что вы работаете в культуре, которая использует , в качестве десятичного разделителя.
Пропуск CultureInfo.InvariantCulture.

2 голосов
/ 19 декабря 2011

Код, который вы написали, должен работать до тех пор, пока преобразуемая строка на самом деле является числом. Возможно, где-то в строке есть номер, который вы не видите. Это единственное, о чем я могу думать.

Это не решит вашу конкретную проблему, но я бы порекомендовал Double.TryParse вместо Convert.ToDouble. Вы в значительной степени исключаете вероятность создания исключения с помощью Double.TryParse

1 голос
/ 19 декабря 2011

Я бы попробовал вызвать Trim, но без параметра '"'. Пожалуйста, попробуйте это и дайте мне знать результат.

0 голосов
/ 19 декабря 2011
double someDouble = Convert.ToDouble("45.00000000"); //returns 45.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...