C#. Настройка формата строки для Convert.ToDouble(string str)

При конвертации строки в переменную типа Double с помощью Convert.ToDouble(string str) по умолчанию используется в качестве разделителя тот символ, который установлен в региональных параметрах. Если он не совпадает, то получите сообщение об ошибке "[FormatException: Входная строка имела неверный формат.]"

Чтобы не зависеть от настроек среды, где будет выполняться приложение, нужно установить значение свойству NumberDecimalSeparator класса NumberFormatInfo (пространство System.Globalization). Свойство устанавливает разделитель для десятичных дробей.

//Пример использования разделителя для десятичных дробей
           NumberFormatInfo nfi = new NumberFormatInfo();
            nfi.NumberDecimalSeparator = ".";
            SumDeducted = Convert.ToDouble(xdoc..Element("SumDeducted").Value, nfi);

Если разделитель окажется неверным, то ошибка будет типа такой:

Ошибка при конвертации строки в число
Ошибка при конвертации строки в число

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


Комментариев нет »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment






MarkiMarta.ru. Записки отца-программиста" с 2009 г.
Категория информационной продукции 18+
Яндекс.Метрика