Consider:
double a = 0.0000005l;
char aa[50];
sprintf(aa, "%lf", a);
printf("%s", aa);
Output: s0.000000
In the above code snippet, the variable aa
can contain only six decimal precis开发者_如何学编程ion. I would like to get an output like "s0.0000005". How do I achieve this?
From your question it seems like you are using C99, as you have used %lf
for double.
To achieve the desired output replace:
sprintf(aa, "%lf", a);
with
sprintf(aa, "%0.7f", a);
The general syntax "%A.B"
means to use B digits after decimal point. The meaning of the A
is more complicated, but can be read about here.
You need to write it like sprintf(aa, "%9.7lf", a)
Check out http://en.wikipedia.org/wiki/Printf for some more details on format codes.
The problem is with sprintf
sprintf(aa,"%lf",a);
%lf says to interpet "a" as a "long double" (16 bytes) but it is actually a "double" (8 bytes). Use this instead:
sprintf(aa, "%f", a);
More details here on cplusplus.com
精彩评论