首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

把字符串转化成双精度浮动点数的有关问题

2012-03-22 
把字符串转化成双精度浮动点数的问题?程序如下:#includestdafx.h doubleatof(chars[])int_tmain(intarg

把字符串转化成双精度浮动点数的问题?
程序如下:
#include   "stdafx.h "

double   atof(char   s[]);

int   _tmain(int   argc,   _TCHAR*   argv[])
{
//int   i   =   sizeof(double);
//printf( "%d ",i);
double   d;
d   =   atof( "789.235 ");
printf( "%f ",d);
return   0;
}

double   atof(char   s[])
{
double   val,power;
int   i,sign;
for(i=0;isspace(s[i]);i++)
;
sign   =   (s[i]   ==   '- ')   ?   -1:1;
if(s[i]   ==   '+ '   ||   s[i]   ==   '- ')
i++;
for(val=0.0;isdigit(s[i]);i++)
val   =   10.0   *   val   +   (s[i]   -   '0 ');
if(s[i]   ==   '. ')
i++;
for   (power=1.0;isdigit(s[i]);i++)
{
val   =   10.0   *val   +   (s[i]   -   '0 ');
power   *=   power;
}
return   sign   *   val/power;
}

看上去没什么问题,但最后结果居然是789235.000000,这是怎么回事??

[解决办法]
double atof(char s[])
{
double result;

sscanf(s, "%f ", &result);

return result;
}

热点排行