首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言 printf 格式化輸出完全指南:小數位數控制與進階技巧

     編輯:程式設計綜合問答

核心語法:%[flags][width][.precision]f

控制浮點數輸出最常用的格式符是 %f,其完整結構:

%[標志][最小寬度][.精度]長度修飾符類型

針對「輸出小數並控制保留位數」,關鍵在 精度 字段 .精度。

常用範例

格式串輸入值輸出結果說明
%.2f3.141593.14保留 2 位小數,四捨五入
%8.2f3.1 3.10總寬度 8,右對齊,不足填空格
%-8.2f3.13.10 左對齊
%08.2f3.100003.10不足寬度用 0 填充
%+.2f3.14+3.14強制顯示正負號
%#.2f3.03.00強制顯示小數點(配合精度)

關鍵點總結

  1. 精度 .n 表示小數點後保留 n 位,四捨五入。
  2. 寬度 m 表示整個輸出字符最小寬度(含小數點、符號、數字),不足左側填空格(默認右對齊)。
  3. %.0f 可輸出無小數部分的整數形式(仍四捨五入)。
  4. %e/%E 科學計數法,%g/%G 自動選擇定點/科學計數法。
  5. 長度修飾符:float、double 統一用 %f(float 傳參自動提升為 double);long double 用 %Lf。

完整演示程序

#include <stdio.h>

int main() {
    double pi = 3.1415926535;
    double neg = -2.71828;
    double small = 0.0001234;

    printf("默認 6 位:      %f\n", pi);           // 3.141593
    printf("保留 2 位:      %.2f\n", pi);         // 3.14
    printf("保留 4 位:      %.4f\n", pi);         // 3.1416
    printf("寬度 10 保留 2: %10.2f\n", pi);       //      3.14
    printf("左對齊寬度 10:  %-10.2f\n", pi);      // 3.14      
    printf("0 填充寬度 10:  %010.2f\n", pi);      // 0000003.14
    printf("強制符號:       %+.2f\n", pi);        // +3.14
    printf("負數保留 3 位:  %.3f\n", neg);        // -2.718
    printf("科學計數法:     %e\n", small);        // 1.234000e-04
    printf("自動選擇:       %g\n", small);        // 0.0001234

    return 0;
}

常見坑與避坑

  • 整數除法導致精度丟失:float f = 5/2; // 2.000000 → 改用 5.0/2 或 (float)5/2。
  • 未初始化變量:輸出隨機垃圾值。
  • 格式符與參數類型不匹配:%f 對應 int 導致未定義行為(現代編譯器會警告 -Wformat)。
  • 精度過高超出類型精度:float 約 6-7 位有效數字,double 約 15-16 位,過大精度無意義。

延伸:scanf 輸入浮點數

  • float 用 %f,double 用 %lf,long double 用 %Lf。
  • 掃描集合 %[^\n] 讀取整行再用 sscanf 解析更安全。

結語

掌握 %[width][.precision]f 這一核心模式,即可靈活控制 C 語言浮點數輸出格式。建議配合 printf 返回值(輸出字符數)做錯誤檢測,養成 -Wall -Wextra 編譯習慣,讓格式字符串錯誤無處遁形。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved