在.net世界中是否有c语言的atof功能的实现? float.Parse的行为不一样。
一些行为差异。
答案 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;
}