首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言輸出格式控制:%g 格式符的科學記數法自動切換行為

     編輯:關於C語言

%g 格式符簡介

%g (或 %G) 是 printf 家族中智能選擇定點或科學記數法的格式符。它根據數值大小自動決定輸出風格:

  • 指數部分 小於 -4 或大於等於精度時 → 使用科學記數法 (%e/%E)
  • 否則 → 使用定點記數法 (%f)
  • 尾隨零會被移除,小數點僅在必要時保留

示例代碼與輸出分析


#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

void main() {
    printf("Displaying 0.1234 yields %g\n", 0.1234);
    printf("Displaying 0.00001234 yields %g\n", 0.00001234);
    system("pause");
}

輸出結果

Displaying 0.1234 yields 0.1234
Displaying 0.00001234 yields 1.234e-05

解析

  1. 0.1234:指數為 0 (10^0),在 [-4, 6) 範圍內 (預設精度 6) → 定點輸出 0.1234
  2. 0.00001234 = 1.234e-5:指數 -5 < -4 → 科學記數法輸出 1.234e-05

%g 核心規則表

數值範圍輸出風格示例
|x| ≥ 10^精度科學記數法1234567 → 1.23457e+06 (精度 6)
|x| < 10^-4科學記數法0.00001234 → 1.234e-05
10^-4 ≤ |x| < 10^精度定點記數法0.1234 → 0.1234

精度控制:%.Ng

%.3g 表示有效數字為 3 位 (非小數位)。


printf("%.3g\n", 12345);    // 1.23e+04
printf("%.3g\n", 1.2345);   // 1.23
printf("%.3g\n", 0.0012345); // 0.00123

%g vs %f vs %e 選擇指南

  • %f:固定小數位,適合貨幣、固定精度測量
  • %e:強制科學記數法,適合科學計算輸出
  • %g:通用輸出,適合日誌、除錯、未知範圍數值,自動適應大小

注意事項

  • 預設精度為 6 位有效數字
  • 不輸出尾隨零:1.2000 → 1.2
  • 整數部分超過精度位數時自動切換科學記數法
  • %G 使用大寫 E:1.234E-05
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved