2013-02-25 454 views
2

當我編譯程序使用此代碼:與%.1f和%.01f有什麼不同?

int main() 
{ 
    float a; 

    scanf("%f", &a); 

    printf("%.1f\n", a); //Here 

    return 0; 
} 

沒有與此其他沒有什麼區別:

int main() 
{ 
    float a; 

    scanf("%f", &a); 

    printf("%.01f\n", a); //Here 

    return 0; 
} 

任何人都可以告訴我爲什麼?

+0

我將從格式字符串的細節開始,特別是關於浮點格式化,精度和對齊的部分[在此鏈接](http:/ /en.cppreference.com/w/c/io/fprintf)。 – WhozCraig 2013-02-25 04:49:33

+0

非常感謝你,我將閱讀你給我的信息。 – 2013-02-25 06:07:01

回答

3

週期後面的數字是指定浮點值小數點後的位數的精度。前導零沒有意義。

週期前的數字是指定最小字段寬度的數字。前導零將把填充字符從空白變爲0.

+0

非常感謝您的回答。 – 2013-02-25 06:07:46

2

小數點後面的數字指定精度 - 將寫入的最小位數。 .1和.01兩者都表示至少放置1位數字,如果少於1位數字,則用零填充結果。普通%f相當於%.6f,即小數點後的6位數字。

+0

感謝您的回答。 – 2013-02-25 06:08:10