2012-12-14 34 views
6

當我使用printf("%.6g\n",36.666666662);,我預計輸出36.666667。但實際輸出是36.6667問題與%克精度

我給出的格式有什麼問題?我的目標是有6個十進制數字

回答

11

這是正確的行爲。

對於,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

+0

cplusplus.com不是「文檔」,事實上有關於一些接口的錯誤信息;一個想到的簡單例子就是scanf的返回值,除非他們已經修正了這個例子。如果您打算將「文檔」作爲鏈接,則應該指向C標準或POSIX中的等效語言(這更易於鏈接)。 –

+0

@R ..:好點,我刪除了鏈接。感謝您的評論。 –