C# float.Parse 字符串

标签 c# .net string substring type-conversion

我是 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默认使用您当前的文化设置。看起来像你的 CurrentCultureNumberDecimalSeparator 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/

相关文章:

java - 如何将整数值转换为内容不同的字符串

javascript - 有没有一种方法可以指定在序列化时将对象的哪些数据传递给序列化程序?

javascript - JavaScript 中的 UTF-8 花式文本转字母数字

c# - 在 Java 中复制 Directory.GetFiles(String, String)

.net - 在 XAML 中导入命名空间时会发生什么?

c# - 如何使用 C# 启动之前停止的 Azure 容器实例?

.NET 用固定空格格式化字符串

.net - 通过 Win 10 Oct 2018 更新,Windows 可以识别闰秒。 .NET 的 DateTime 现在也是吗?

c# - 如何以编程方式备份​​ Sql Server Express 数据库?

c# - 引用类型的更改值