I have written the following code. It should convert a string like "88"
to double value 88
and print it
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
But it always prints 0
. But when I change type of ret to int
, it works fine. When the type is float
or double
, it prints 0
. So why am I getting these ambiguous results?
"%f"
or"%g
" (or"%e"
for exponential format) is used for both(float)
and(double)
. – Becausefor( ; *value != '\0'; ret = 10*ret + *value++ - '0');
– Otoplasty