double convertToFloat(char* str)
{
double num = 0.0;
int i = 0;
double t = 10;
bool isNegative = false;
bool firstPointFlag = false;
if(str == NULL)
return num;
if(str[i] == '-')
{
isNegative = true;
i++;
}
else if(str[i] == '+')
{
isNegative = false;
i++;
}
else if(str[i] < '0' && str[i] > '9')
{
return num;
}
while(str[i] != '\0')
{
if(str[i] >= '0' && str[i] <= '9')
{
if(t == 10)
{
num = num*t + str[i] - '0';
}
else
{
num += (str[i] - '0') * t;
t = t*0.1;
}
}
else if(str[i] == '.')
{
if(!firstPointFlag)
{
t = 0.1;
firstPointFlag = true;
}
else
{
//第二次遇到小数点
return isNegative ? (-1 * num) : num;
}
}
else
{
return isNegative ? (-1 * num) : num;
}
i++;
}
return isNegative ? (-1 * num) : num;
}
先判断第一个字符,是否为正负号,是否为其他字符。
载判断剩余的。当遇到第一次遇到小数点时,t就从10变为0.1,每增加一位小数,t要乘上0.1.
还要再加上一个标记为判断是否是第二次碰到小数点。