C# float.Parse String

后端 未结 2 1162
轻奢々
轻奢々 2020-12-18 20:40

I\'m new in C# and need to read float values (x, y, z) from file. It looks like:

0 -0.01 -0.002

0.000833333333333 -0.01

相关标签:
2条回答
  • 2020-12-18 20:42

    It seems your culture uses comma as the decimal separator. Try parsing it with InvariantCulture

    var value = float.Parse(tempLine.Substring(begin, end), CultureInfo.InvariantCulture);
    

    In addition to this, the way you parsing the lines is more complicated than it should. You can just split the line instead of trying to deal with indices:

    foreach(var str in tempLine.Split())  
    {
        float value = float.Parse(str, CultureInfo.InvariantCulture);
    }
    
    0 讨论(0)
  • 2020-12-18 20:52

    float.Parse(string) method uses your current culture settings by default. Looks like your CurrentCulture's NumberDecimalSeparator property is , not .

    That's why you get FormatException in your "0.54" example.

    As a solution, you can use a culture have . as a NumberDecimalSeparator like InvariantCulture as a second parameter in Parse method, or you can .Clone() your CurrentCulture and set it's NumberDecimalSeparator property to .

    float number = float.Parse("0.54", CultureInfo.InvariantCulture);
    

    or

    var culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
    culture.NumberFormat.NumberDecimalSeparator = ".";
    float number = float.Parse("0.54", culture);
    
    0 讨论(0)
提交回复
热议问题