int is_digit(char ch)
{
if (ch >= '0'&&ch <= '9')
return 1;
else
return 0;
}
float Floatnum(char *s)
{
float power, value;
int i = 0;
float sign;
while (s[i])
{
if (s[i] == '-') break;
else if (s[i] >= '0' && s[i] <= '9') break;
i++;
}
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '-' || s[i] == '+')//要是有符号位就前进一位
i++;
for (value = 0.0; is_digit(s[i]); i++)//计算小数点前的数字
value = value*10.0 + (s[i] - '0');
if (s[i] == '.')
i++;
for (power = 1.0; is_digit(s[i]); i++)//计算小数点后的数字
{
value = value*10.0 + (s[i] - '0');
power *= 10.0;
}
return sign*value/power;
}
注:我想从串口收到的字符串中找出数据,但是调用不能返回值,改为 int Floatnum(char *s)是可以返回整型值 这是为何????????????????
一周热门 更多>