标题:求助:字符串转换为浮点数
只看楼主
大个
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-5-19
 问题点数:0 回复次数:3 
求助:字符串转换为浮点数
字符串转换为浮点数?
例如:1234567.89字符转换为相应的浮点数:1234567.89.使用atof函数不能实现呀!(因精度不够呀!)
还有别的法吗?
谢谢了!等待高手的解答!
搜索更多相关主题的帖子: 点数 字符 
2007-07-06 21:23
huangfengchu
Rank: 1
等 级:新手上路
威 望:2
帖 子:274
专家分:0
注 册:2007-5-22
得分:0 

这是我自己编写的一类似于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;
}


深山苦学C语言,终年不见外面世界。
2007-07-06 21:39
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1026
专家分:177
注 册:2007-5-10
得分:0 

int sscanf(const char *, const char *, ...);

2007-07-06 21:48
大个
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-5-19
得分:0 
谢谢了!不过我还是想要一个库函数处理它,希望大家继续为我解答!十分感谢!
2007-07-06 21:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-153351-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.913495 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved