私が使用したときprintf("%.6g\n",36.666666662);
、私は出力を期待していました36.666667
。しかし、実際の出力は36.6667
私が与えたフォーマットの何が問題になっていますか?私の目的は小数点以下6桁にすることです
これは正しい動作です。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。