读书人

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

发布时间: 2012-03-22 17:43:57 作者: rapoo

把字符串转化成双精度浮动点数的问题?
程序如下:
#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;
}

读书人网 >C语言

热点推荐