Is there an implementation for the c language's atof function in the .net world? float.Parse does not behave the same.
Some behavioral differences.
- "50 Apple" will return 50.
- "50 Apple. 1" will return 50.
- "Apple" will return 0.
Is there an implementation for the c language's atof function in the .net world? float.Parse does not behave the same.
Some behavioral differences.
If you mean you want to duplicate atof
's leniency (ignoring preceding whitespace and trailing non-numeric characters), you can do this (assuming 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;
}