我在哪里可以找到atof的.net实现?

时间:2010-02-12 17:15:10

标签: .net interop

在.net世界中是否有c语言的atof功能的实现? float.Parse的行为不一样。

一些行为差异。

  • “50 Apple”将返回50。
  • “50 Apple.1”将返回50。
  • “Apple”将返回0。

1 个答案:

答案 0 :(得分:6)

如果您的意思是要复制atof的宽容(忽略前面的空格和尾随非数字字符),您可以这样做(假设C#3.0):

float myAtof(string myString)
{
    Predicate<char> testChar = c => c == '.' || 
                                    c == '-' || 
                                    c == '+' || 
                                    char.IsDigit(c);

    myString = new string(myString.Trim().TakeWhile(testChar).ToArray());

    if (myString.Length > 0)
    {
        float rvl;

        // accounts for bogus strings of valid chars, e.g. ".-":
        if (float.TryParse(myString, out rvl))
        {
            return rvl;
        }
    }

    return 0;
}
相关问题