输入字符串的格式不正确 #2

Posted

技术标签:

【中文标题】输入字符串的格式不正确 #2【英文标题】:Input string was not in a correct format #2 【发布时间】:2011-07-13 14:54:06 【问题描述】:
double temp;
temp = (double)Convert.ToDouble("1234.5678");

嘿,女士们,我这辈子都想不通为什么上面的线路不起作用。上面的行给了我一个运行时错误,上面写着:

未处理的类型异常 System.FormatException 发生在 mscorlib.dll

附加信息:输入字符串 格式不正确。

【问题讨论】:

【参考方案1】:

据我所知,Convert 方法使用当前语言环境进行此类转换。在这种情况下,我猜您当前的语言环境会期望逗号作为小数点。尝试为您的应用程序设置当前区域设置或转换为使用点的某些语言/国家(例如 en_US)。该方法应提供第二个可选参数以提供 IFormatProvider 作为替代解决方案。

【讨论】:

【参考方案2】:

为了convert string to 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】:

我建议你改用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.");

【讨论】:

【参考方案9】:

我没有看到上面的代码有任何问题。它工作正常并打印值1234.5678。我在VS2008中试过了。可能与您机器上的区域设置有关。

【讨论】:

【参考方案10】:

当你让文本框为空时我发现了问题 出现此错误,请尝试此错误处理。

System.FormatException 类型的未处理异常发生在 mscorlib.dll 附加信息:输入字符串不正确 格式。

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

【讨论】:

以上是关于输入字符串的格式不正确 #2的主要内容,如果未能解决你的问题,请参考以下文章

String.Format:输入字符串的格式不正确[关闭]

MySQL 查询中的输入字符串格式不正确

输入字符串的格式不正确

C#,输入字符串的格式不正确,十进制值

输入字符串在 double.Parse 中的格式不正确

数组中的“System.FormatException:'输入字符串格式不正确”错误