Где я могу найти .net реализацию atof? - PullRequest
2 голосов
/ 12 февраля 2010

Существует ли реализация функции atof языка c в мире .net? float.Parse не ведет себя так же.

Некоторые поведенческие различия.

  • "50 яблок" вернет 50.
  • "50 яблок. 1" вернет 50.
  • «Яблоко» вернет 0.

1 Ответ

6 голосов
/ 12 февраля 2010

Если вы хотите дублировать снисходительность 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...