При конвертации строки в переменную типа Double с помощью Convert.ToDouble(string str) по умолчанию используется в качестве разделителя тот символ, который установлен в региональных параметрах. Если он не совпадает, то получите сообщение об ошибке "[FormatException: Входная строка имела неверный формат.]"
Чтобы не зависеть от настроек среды, где будет выполняться приложение, нужно установить значение свойству NumberDecimalSeparator класса NumberFormatInfo (пространство System.Globalization). Свойство устанавливает разделитель для десятичных дробей.
//Пример использования разделителя для десятичных дробей NumberFormatInfo nfi = new NumberFormatInfo(); nfi.NumberDecimalSeparator = "."; SumDeducted = Convert.ToDouble(xdoc..Element("SumDeducted").Value, nfi);
Если разделитель окажется неверным, то ошибка будет типа такой:
Даже если приложение корректно работает без дополнительной установки разделителя, рекомендую все равно это делать. В качестве альтернативы – можно вынести определение разделителя в настройки.