6

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

我给出的格式有什么问题?我的目标是有 6 位小数

4

1 回答 1

11

这是正确的行为。根据cplusplus.com

对于 a、A、e、E、f 和 F 说明符:这是要在小数点后打印的位数。

对于 g 和 G 说明符:这是要打印的最大有效位数。

如果您使用f而不是gthen 它将按您的预期工作。


示例代码

#include <stdio.h>

int main(void) {
    printf("%.6g\n", 36.666666662);
    printf("%.6f\n", 36.666666662);
    return 0;
}

结果

36.6667
36.666667

在线查看它:ideone

于 2012-12-14T12:09:29.860 回答