c语言中a[10]="12345.56",怎么把这字符串原样转换为float类型
2个回答
展开全部
可以自己写一个函数,下面是我自己写的,包含了必须的头文件:
#include <string.h> //strlen(),NULL
#include <math.h> //pow()
const double StringConvertToFloat(char*str)
{
int length=strlen(str); //字符串长度
int position=0; //记录小数点位置
double num=0; //存储数据
for (int i=0;i<length;i++)
{
if ('.'==str[i])
{
if (i==0 || position!=0)
{
return NULL;
}
position=i;
continue;
}
if (str[i]<'0' || str[i]>'9')
{
return NULL;
}
num=num*10+str[i]-'0';
}
if (position!=0)
{
num/=pow(10.0,(length-position-1));
}
return num;
}
返回值为float的话会丢失精度,所以用了double
#include <string.h> //strlen(),NULL
#include <math.h> //pow()
const double StringConvertToFloat(char*str)
{
int length=strlen(str); //字符串长度
int position=0; //记录小数点位置
double num=0; //存储数据
for (int i=0;i<length;i++)
{
if ('.'==str[i])
{
if (i==0 || position!=0)
{
return NULL;
}
position=i;
continue;
}
if (str[i]<'0' || str[i]>'9')
{
return NULL;
}
num=num*10+str[i]-'0';
}
if (position!=0)
{
num/=pow(10.0,(length-position-1));
}
return num;
}
返回值为float的话会丢失精度,所以用了double
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询