6
printf("%.6g\n",36.666666662);
を使用した場合、出力は36.666667
と予想されました。しかし実際の出力は36.6667
%g精度での問題
私が与えた形式は何ですか?私の目的は10進数6桁です。
printf("%.6g\n",36.666666662);
を使用した場合、出力は36.666667
と予想されました。しかし実際の出力は36.6667
%g精度での問題
私が与えた形式は何ですか?私の目的は10進数6桁です。
これは正しい動作です。
、A、E、E、F及びF指定子:これは桁数が小数点以下を印刷します。
gおよびG指定子の場合:これは、印刷できる有効桁数の最大数です。
g
の代わりにf
を使用すると、期待どおりに動作します。
例コード
#include <stdio.h>
int main(void) {
printf("%.6g\n", 36.666666662);
printf("%.6f\n", 36.666666662);
return 0;
}
結果
36.6667
36.666667
それがオンラインで作業を参照してください:ideone。
cplusplus.comは「ドキュメンテーション」ではなく、実際には多くのインターフェイスについて間違った情報を持っています。彼らが修正していない限り、頭に浮かぶ簡単な例は 'scanf'の戻り値です。 "ドキュメンテーション"をリンクにする場合は、POSIXのC標準またはそれと同等の言語を指していなければなりません(リンクする方が簡単です)。 –
@R ..:良い点、私はリンクを削除しました。コメントありがとう。 –