Строка ввода не была в правильном формате # 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);}