-3

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

4

3 回答 3

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;

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

于 2013-09-19T15:42:21.817 回答
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;
    }
于 2013-09-19T17:26:18.547 回答
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;
    }
}
于 2013-09-19T15:50:52.533 回答