我写了下面的代码。它应该将类似于
"88"
的字符串转换为双精度浮点数88
并打印出来。void convertType(char* value)
{
int i = 0;
char ch;
double ret = 0;
while((ch = value[i])!= '\0')
{
ret = ret*10 + (ch - '0');
i++;
}
printf("%d",ret); //or %lf..
}
// input string :88
但它总是打印0
。但当我将ret的类型更改为int
时,它可以正常工作。当类型为float
或double
时,它会打印0
。那么我为什么会得到这些不明确的结果呢?
"%f"
或"%g"
(指数格式用"%e"
)既可用于(float)
也可用于(double)
。 - geekosaurfor( ; *value != '\0'; ret = 10*ret + *value++ - '0');
- abelenky