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

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

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

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

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

Ответ 1

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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

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;

Ответ 4

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

Ответ 5

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

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

С уважением.

Ответ 6

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

Ответ 7

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

Ответ 8

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

Ответ 9

Я рекомендую вместо этого использовать 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.");
}

Ответ 10

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

Произошло необработанное исключение типа System.FormatException в mscorlib.dll Дополнительная информация: входная строка была в неправильном формате.

if (!string.IsNullOrEmpty(Txt1.Text)) {int _qty = (int)Convert.ToInt32(Txt1.Text);}