为什么在将字符串转换为float时会出现FormatException?

Edw*_*d83 13 c# string floating-point exception

当我尝试将字符串转换为float时:

Console.WriteLine(float.Parse("6.59"));
Run Code Online (Sandbox Code Playgroud)

它引发了一个异常:

未处理的异常:System.FormatException:输入字符串不在正确的格式中.
at System.Number.ParseSingle(String value,NumberStyles options,NumberFormat Info numfmt)

当我这样尝试时:

Console.WriteLine(Convert.ToSingle("6.59"));
Run Code Online (Sandbox Code Playgroud)

它引发了同样的异常:

未处理的异常:System.FormatException:输入字符串不在正确的格式中.
在System.Number.TarseSingle(字符串值,NumberStyles选项,NumberFormat信息numfmt)
在System.Convert.ToSingle(字符串值)

你能解释一下为什么会这样吗?

R. *_*des 37

单个参数Parse方法使用当前区域性来解析字符串.如果您当前的文化使用其他小数分隔符,则会失败.

尝试使用不变文化:

float.Parse("6.59", CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

  • 对于这个有用的提示+1,我的代码正在处理我的开发环境,但不是在生产环境中. (2认同)

Jon*_* Aa 5

这里的问题是你的文化。

要么像这样设置不变文化:

float.Parse("6.59", CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

或为您的文化使用正确的小数点分隔符

float.Parse("6,59")
Run Code Online (Sandbox Code Playgroud)

我想知道你为什么使用文字字符串。如果您在输入文字浮点数时遇到问题,可以使用

Console.WriteLine(6.59f)
Run Code Online (Sandbox Code Playgroud)

如果你这样做,文化并不重要,因为值是在编译时决定的。