36
我有一個浮點數,如4917.24
。我想打印它始終有小數點前五個字符,前導零,小數點後三位數字。printf與前導零在C
我在我使用的嵌入式系統上試過printf("%05.3f", n)
,但它打印*****
。我有格式說明符是否正確?
我有一個浮點數,如4917.24
。我想打印它始終有小數點前五個字符,前導零,小數點後三位數字。printf與前導零在C
我在我使用的嵌入式系統上試過printf("%05.3f", n)
,但它打印*****
。我有格式說明符是否正確?
您的格式說明符不正確。從我的機器上的printf()
手冊頁:
0
零「0
」字符表示零填充應使用,而不是空白填充。 A'-
'優先於'0
''如果兩者都被使用;字段寬度: 可選數字字符串,指定字段寬度;如果輸出字符串的字符數少於字段寬度,則會在左側(或右側,如果已經給出左側調整指示符)空白填充以構成字段寬度(請注意,前導零是標記,但嵌入的零是字段寬度的一部分);
精密:可選期間,「
.
」,後跟一個可選的數字字符串,給出一個精確的,它指定在小數點後出現的位數,爲È和˚F格式,或從字符串打印的最大字符數;如果數字字符串丟失,則精度被視爲零;
對於您的情況,您的格式將%09.3f
:
#include <stdio.h>
int main(int argc, char **argv)
{
printf("%09.3f\n", 4917.24);
return 0;
}
輸出:
$ make testapp
cc testapp.c -o testapp
$ ./testapp
04917.240
注意,這個答案是具有printf()
實現嵌入式系統的條件是標準 - 符合這些細節 - 許多嵌入式環境不要有這樣的實現。
謝謝,我看到我正在犯的錯誤。得到它在PC上工作,我的嵌入式系統仍然沒有正確格式,將不得不做的工作。 – 2011-02-15 18:26:25