最好的办法是使用正则表达式
using System.Text.RegularExpressions;
....
Regex myRex = new Regex("^[-+]?[0-9]+[.]?[0-9]*([eE][-+]?[0-9]+)?$");
String s = "123.345";
Match m = myRex.Match(s);
if ( m.Success )
{
//Success
}
else
{
//Failed
}
这样只要是数字格式的字符串,一定会被识别出来。
不要使用“尝试将字符串转化为数字,如果出错就不是数字”这种判断方法,这是由于无论那种数字类型的变量都有表达范围,但是字符串的长度可以是无限的。出错的可能一种是不是数字,还有可能是溢出等问题,因此这种做法是不合适的。
感谢“TheAres(班门斧)”提供的方法