我是 C# 新手,需要从文件中读取 float
值 (x, y, z)
。
看起来像:
0 -0.01 -0.002
0.000833333333333 -0.01 -0.002
如果我正在尝试
float number = float.Parse("0,54"); // it works well, but
float number = float.Parse("0.54"); // gains exepction.
我从每一行读取值的代码(可能有问题):
int begin = 0;
int end = 0;
for (int i = 0; i < tempLine.Length; i++)
{
if (Char.IsWhiteSpace(tempLine.ElementAt(i)))
{
end = i;
float value = float.Parse(tempLine.Substring(begin, end));
begin = end;
System.Console.WriteLine(value);
}
}
有人可以帮忙吗?
最佳答案
float.Parse(string)
method默认使用您当前的文化设置。看起来像你的 CurrentCulture
的 NumberDecimalSeparator
property是 ,
不是 。
这就是您在 "0.54"
示例中得到 FormatException
的原因。
作为解决方案,您可以使用具有 .
的区域性作为 NumberDecimalSeparator
,例如 InvariantCulture
作为 Parse
方法中的第二个参数,或者您可以 .Clone()
您的 CurrentCulture
并将其 NumberDecimalSeparator
属性设置为 。
float number = float.Parse("0.54", CultureInfo.InvariantCulture);
或
var culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.NumberFormat.NumberDecimalSeparator = ".";
float number = float.Parse("0.54", culture);
关于C# float.Parse 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27722032/