您的位置:首页 > 其它

判断CStrnig 字符串是否为double类型的变量

2016-01-22 16:22 316 查看
bool ISDouble(CString s)

{
//所有字符必须是数字或者小数点,负号。小数点的个数小于等于1个,负号的个数小于等于一个
int num=s.GetLength();
if(num<=0)
return false;
//小数点个数不能大于1个
int xiaoshudian=s.Replace(".",".");
if(xiaoshudian>1)
return false;
//负号个数不能大于1个
int fuhao=s.Replace("-","-");
if(fuhao>1)
return false;
//不能为数字和小数点负号之外的非字符
for(int i=0;i<num;++i)
{
if(!(s[i]=='0'||s[i]=='1'||s[i]=='2'||s[i]=='3'||s[i]=='4'||s[i]=='5'||s[i]=='6'||s[i]=='7'||s[i]=='8'||s[i]=='9'||s[i]=='.'||s[i]=='-'))
{
return false;
}
}
//如果是整数
if(xiaoshudian==0)
{
//如果是负整数
if(fuhao==1)
{
//第二位不能为0   [-0123]
if(num>1&&s[1]=='0')
{
return false;
}
}
//正整数
else
{
//第一位不能为0   [0234]
if(s[0]=='0'&&num>1)
{
return false;
}
}
}
//如果是小数
else
{
//如果是负小数
if(fuhao==1)
{
//如果是0开头的,接下来一个字符一定是小数点,并且长度大于等于3(不包括负号)
if(s[1]=='0')
{
if(!(num>=4&&s[2]=='.'))
{
return false;
}
}
//非0开头
else
{

if(s[1]=='.'||s[num-1]=='.')
{
return false;
}
}
}
//正小数
else
{
//以0开头的
if(s[0]=='0')
{
if(!(num>=3&&s[1]=='.'))
{
return false;
}
}
//非0开头的小数小不能再第一位和为后一位
else
{
if(s[0]=='.'||s[num-1]=='.')
{
return false;
}
}
}

}
return true;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: