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?
We can convert a char array to double by using the std::atof() function.
The strtod() is a builtin function in C and C++ STL which interprets the contents of the string as a floating point number and return its value as a double. It sets a pointer to point to the first character after the last valid character of the string, only if there is any, otherwise it sets the pointer to null.
Use sscanf
(header stdio.h
or cstdio
in C++):
char str[] = "12345.56";
double d;
sscanf(str, "%lf", &d);
printf("%lf", d);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With