2012-12-14 17 views
6

printf("%.6g\n",36.666666662);を使用した場合、出力は36.666667と予想されました。しかし実際の出力は36.6667%g精度での問題

私が与えた形式は何ですか?私の目的は10進数6桁です。

答えて

11

これは正しい動作です。

、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

+0

cplusplus.comは「ドキュメンテーション」ではなく、実際には多くのインターフェイスについて間違った情報を持っています。彼らが修正していない限り、頭に浮かぶ簡単な例は 'scanf'の戻り値です。 "ドキュメンテーション"をリンクにする場合は、POSIXのC標準またはそれと同等の言語を指していなければなりません(リンクする方が簡単です)。 –

+0

@R ..:良い点、私はリンクを削除しました。コメントありがとう。 –