判断输入是否为浮点数
在VC程序编辑时经常会遇到控制输入数为浮数的情况,若设置输入框格式为float型,虽可以满足要求,但是在实时控制时却会遇到一些困难,比如小数点不能输入的情况
因此还是将其设置为CString型比较方便,并写个函数进行控制,显得更为方便
这样还可以方便的控制其小数点后只能输入几位小数的情况
其函数为
BOOL CIsFloatDlg::IsFloat(CString &str, int ID)
{
int dotFlag=0;
//是否为浮点数
for(int i = 0; i < str.GetLength(); i++)
{
if(str[i] == '.')
dotFlag++;
if ((dotFlag>1 )//小数点多于一个
||
!((str[i] == '.')|| (str[i] >= '0' && str[i] <= '9'))//所输入的数不是.0-9
)
{
MessageBox("不是数字");
((CEdit*)GetDlgItem(ID))->SetSel(0,1000,true) ;
return false;
}
}
//只能输入两位小数
int dotPosition=str.Find(".");
if(dotPosition!=-1)
{
str=str.Left(dotPosition+3);//删除最后一位
UpdateData(false);
((CEdit*)GetDlgItem(ID))->SetSel(1000,1000,false) ;//焦点停在最后
return false;
}
return true;
}
原代码下载 http://download1.csdn.net/down3/20070610/10104714439.rar
在VC程序编辑时经常会遇到控制输入数为浮数的情况,若设置输入框格式为float型,虽可以满足要求,但是在实时控制时却会遇到一些困难,比如小数点不能输入的情况
因此还是将其设置为CString型比较方便,并写个函数进行控制,显得更为方便
这样还可以方便的控制其小数点后只能输入几位小数的情况
其函数为
BOOL CIsFloatDlg::IsFloat(CString &str, int ID)
{
int dotFlag=0;
//是否为浮点数
for(int i = 0; i < str.GetLength(); i++)
{
if(str[i] == '.')
dotFlag++;
if ((dotFlag>1 )//小数点多于一个
||
!((str[i] == '.')|| (str[i] >= '0' && str[i] <= '9'))//所输入的数不是.0-9
)
{
MessageBox("不是数字");
((CEdit*)GetDlgItem(ID))->SetSel(0,1000,true) ;
return false;
}
}
//只能输入两位小数
int dotPosition=str.Find(".");
if(dotPosition!=-1)
{
str=str.Left(dotPosition+3);//删除最后一位
UpdateData(false);
((CEdit*)GetDlgItem(ID))->SetSel(1000,1000,false) ;//焦点停在最后
return false;
}
return true;
}
原代码下载 http://download1.csdn.net/down3/20070610/10104714439.rar