其实用正则表达式也可以 
static bool IsNumeric(string str) 
{ 
if (str==null || str.Length==0) 
return false; 
foreach(char c in str) 
{ 
if (!Char.IsNumber(c)) 
{ 
return false; 
} 
} 
return true; 
} 
正则表达的写法是: 
static bool IsNumeric(string str) 
{ 
System.Text.RegularExpressions.Regex reg1 
= new System.Text.RegularExpressions.Regex(@"^[-]?\d+[.]?\d*$"); 
return reg1.IsMatch(str); 
} 
其实最单的是用VB.NET中的函数,以下代码段 
using Microsoft.VisualBasic 
Information.IsNumeric(str_input) 
返回true或false判断是否数字 
不过在编译时要加上-lMicrosoft.VisualBasic才能编译成功 
CSDN 网友 ( 2005-11-24) 
那如果直接这么作呢 
try{ 
float f=float.parse(temp); 
} 
catch(exception ex) 
{ 
MessageBox.Show("这不是数字"); 
} 
dancefire ( 2005-11-13) 
我觉得正则表达式不太正确,小数点前面的前导零应该允许省略,小数点后面的0,也允许省略,但不允许单独以小数点形式出现。你的这个表达式无法满足前导零省略的情况。而且,最重要的,"."在正则表达式中表示任意字符,因此,对于你的表达式,2a2,也能够通过测试。 
^[-]?\d+[.]?\d*$ 
应该改为如下所示: 
^[-]?(\d+\.?\d*|\.\d+)$