考虑:
double a = 0.0000005l;
char aa[50];
sprintf(aa, "%lf", a);
printf("%s", aa);
Output: s0.000000
在上面的代码片段中,变量aa
只能包含六位小数。我想获得像“s0.0000005”这样的输出。我如何实现这一目标?
答案 0 :(得分:27)
从您的问题看来,您似乎在使用C99,因为您已将%lf
用于双倍。
要实现所需的输出替换:
sprintf(aa, "%lf", a);
与
sprintf(aa, "%0.7f", a);
一般语法"%A.B"
表示在小数点后使用B位。 A
的含义更复杂,但可以阅读here。
答案 1 :(得分:7)
您需要像sprintf(aa, "%9.7lf", a)
查看http://en.wikipedia.org/wiki/Printf以获取有关格式代码的更多详细信息。
答案 2 :(得分:-1)
问题在于sprintf
sprintf(aa,"%lf",a);
%lf表示将“a”解释为“long double”(16字节),但它实际上是“double”(8字节)。请改用:
sprintf(aa, "%f", a);