Intereting Posts
Есть ли у Swagger (Asp.Net Core) описание controllerа? Прокрутите WPF FlowDocumentScrollViewer из кода? Преобразовать деревья выражений Как удалить объект C # с динамическим типом Как сравнить относительный порядок Z двух элементов управления WPF, которые являются частью одного и того же логического / визуального дерева? Простой инжектор: вставить тот же экземпляр экземпляра UnitOfWork через службы одного и того же графа Как получить имя дня с выбранной даты? C ++ / CLI: предотrotation сбора мусора в управляемой оболочке неуправляемого ресурса Ключевые слова поиска с использованием LINQ Получить рейтинг производительности Windows Триггеры пула приложений IIS: недостаточно для хранения этой операции (Azure App Service) Как я могу поместить разделитель между каждым ListBoxItem в моем ListBox? Виртуальный статический метод C # initializeCulture страниц срабатывает перед selectIndexИзменить выпадающий список в masterPage SSRS: получить список всех отчетов и параметров в одном вызове веб-службы?

Строка ввода не была в правильном формате # 2

double temp; temp = (double)Convert.ToDouble("1234.5678"); 

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

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

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

    Насколько я знаю, методы Convert используют текущую локаль для выполнения таких преобразований. В этом случае я предполагаю, что ваш текущий язык ожидает запятую как десятичную точку. Попробуйте установить текущую локаль для вашего приложения или преобразование на какой-либо язык / страну, где используются точки (например, en_US). Метод должен предоставить второй необязательный параметр для предоставления IFormatProvider в качестве альтернативного решения.

    Чтобы преобразовать строку в double без исключения:

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

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

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

     double.Parse("1234.5678", CultureInfo.InvariantCulture) 

    первое решение (как упоминалось в других сообщениях):

     double temp = double.Parse("1234.5678", CultureInfo.InvariantCulture); 

    второе решение – по умолчанию использовать текущий stream:

     Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; double temp = double.Parse("1234.5678"); 

    третье решение – сделать его по умолчанию блоком кода:

     var prevCurrentCulture = Thread.CurrentThread.CurrentCulture; Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; ... double temp = double.Parse("1234.5678"); ... Thread.CurrentThread.CurrentCulture = prevCurrentCulture; 

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

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

     double temp = double.Parse("1234.5678", System.Globalization.CultureInfo.CurrentCulture); 

    С уважением.

    Проверьте региональные настройки. Ваш десятичный символ должен быть «.».

     double temp = double.Parse("1234,5678"); 

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

     double temp = 0; if (double.TryParse("123.456", out temp) { Console.WriteLine(string.Format("Parsed temp: {0}", temp); } else { Console.WriteLine("Input value was not able to be parsed."); } 

    Я не вижу никаких проблем с вышеприведенным code.it отлично работает и печатает значение 1234.5678 . Я пробовал это в VS2008. Возможно, что-то связано с настройками языка на вашем компьютере.