#include <stdio.h>
float strNumToFloat(unsigned char *strNum)
{
float val_I = 0.0; // 整数位
float val_P = 0.0, p = 1.0; // 小数位
unsigned char numChar[20] = {'\0'}; // 字符数组
int i = 0, j = 0, pointPos = 0;
// 遍历字符串,装进字符数组
while (*strNum != '\0')
{
// 找到数字字符
if ((*strNum >= '0') && (*strNum <= '9'))
{
numChar[i] = *strNum;
}
// 找到小数点
else if (*strNum == '.')
{
numChar[i] = *strNum;
pointPos = i + 1; // pointPos存放字符数组中小数点位置
}
i++;
strNum++; // 遍历下一个字符
}
// 字符数组中 0 ~ (pointPos-2) 索引的数据为整数位,
// pointPos ~ (i-1) 索引的数据为小数位
for (j = 0; j < pointPos - 1; j++)
{
val_I *= 10;
val_I += (numChar[j] - 48); // 字符数字减48等价于普通数字
}
for (j = pointPos; j < i; j++)
{
p /= 10;
val_P += (numChar[j] - 48) * p; // 字符数字减48等价于普通数字
}
return val_I + val_P;
}
int main(void)
{
unsigned char *str = "1024.3222";
printf("%f\n", strNumToFloat(str));
return 0;
}
C功能模块 -> 数字字符串转浮点
最新推荐文章于 2024-06-12 18:28:23 发布