%g精度问题

时间:2012-12-14 12:06:20

标签: c++ c

当我使用printf("%.6g\n",36.666666662);时,我期望输出36.666667。但实际输出为36.6667

我给出的格式有什么问题?我的目标是有6个十进制数字

1 个答案:

答案 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