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代わりに使用するとg、期待どおりに機能します。


サンプルコード

#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 に答える