如何将字符串转换为浮点值?

时间:2013-09-19 15:36:02

标签: c# .net windows-phone-7

我想将值高度转换为浮点值。最终值为3英尺5英寸。我想在C#中将其转换为浮点值3.5。这个值在我的公式中有所不同,我需要用它来计算。怎么做这个任务?

3 个答案:

答案 0 :(得分:3)

假设您的输入字符串名为input

var parts = input.Trim().Split(' ');
int feet = int.Parse(parts[0]);
int inches = int.Parse(parts[2]);
float result = feet + inches / 12.0f;

但请注意,这很脏(取决于间距等) - 因为您没有提供任何有关您给出的内容和您想要的内容的详细信息(或者更确切地说,我非常确定您想要的内容) - 请查看评论在你的问题下面),这是你可以得到的。 ;)

答案 1 :(得分:0)

忽略3英尺5英寸不是3.5英尺的事实:

class Program
{
    static void Main(string[] args)
    {
        string heightString = "3ft 5 in";
        string validRegex = @"^\d(\s)*ft(\s)*\d(\s)*in$";
        if(!Regex.Match(heightString, validRegex).Success)
            throw new Exception("Invalid Input");

        var feetIndex = heightString.IndexOf("ft");
        var substring = heightString.Substring(0,feetIndex ).Trim();
        var inchesSubString = heightString.Substring(feetIndex + 2);
        var inchesStr = inchesSubString.Substring(0, inchesSubString.IndexOf("in")).Trim();

        var integralPart = float.Parse(substring);
        var fractionalPart = float.Parse(inchesStr)/10D;

        var result = integralPart + fractionalPart;
    }
}

答案 2 :(得分:0)

假设输入的格式始终为“3 ​​ft 5 in”,您可以按空格分割,连接第一个和第三个项目以及“。”介于两者之间并将结果字符串转换为浮点数。

    public float Convert(string height)
    {
        if (string.IsNullOrEmpty(height))
            return 0;

        // input format: "3 ft 5 in"
        var spaceSplitted = height.Split(' ');
        if (spaceSplitted.Length <= 3)
            return 0;

        var concatenatedValue = spaceSplitted[0] + "." + spaceSplitted[2];

        float floatResult;

        float.TryParse(concatenatedValue, NumberStyles.Float, CultureInfo.InvariantCulture, out floatResult);

        return floatResult;
    }