例如:1234567.89字符转换为相应的浮点数:1234567.89.使用atof函数不能实现呀!(因精度不够呀!)
还有别的法吗?
谢谢了!等待高手的解答!
这是我自己编写的一类似于atof的函数,其实这算法还可以优化,后面没做了,你自己看看优化下。
#include"stdio.h"
void strtofloat (char s2[])
{
int i=0,j=1,z=0;
double sum=0,x=1,k=0,m=0,d,y,n;
while(s2[0]=='-'&&s2[j]!='\0'&&s2[j]!='.'){//处理如果是负整数部分
n=s2[j++]-'0';
sum=sum*10-n;}
while(s2[0]!='-'&&s2[i]!='\0'&&s2[i]!='.'){//处理如果是正整数部分
n=s2[i++]-'0';
sum=sum*10+n;}
if(s2[0]!='-')
d=i+1;
else
d=j+1;
while(s2[d]!='\0'){//处理小数部分
x=x*10;
y=(double)(s2[d++]-'0')/x;
m+=y;
++z;}
if(s2[0]=='-')//计算结果
k=sum-m;
else
k=sum+m;
printf("%0.*f",z,k);//控制输出
}
int main(void)
{
void strtofloat(char s2[]);
char s2[80];
scanf("%s",s2);
strtofloat(s2);
getch();
return 0;
}