当我使用printf("%.6g\n",36.666666662);
时,我期望输出36.666667
。但实际输出为36.6667
我给出的格式有什么问题?我的目标是有6个十进制数字
答案 0 :(得分:11)
这是正确的行为。根据{{3}}:
对于a,A,e,E,f和F说明符:这是>小数点后要打印的位数。
对于g和G说明符:这是要打印的最大有效位数。
如果您使用f
代替g
,那么它将按您的预期运作。
示例代码
#include <stdio.h>
int main(void) {
printf("%.6g\n", 36.666666662);
printf("%.6f\n", 36.666666662);
return 0;
}
<强>结果强>
36.6667
36.666667
看到它在线工作:cplusplus.com。