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

Delphi 格式化輸出函數詳解(三):FormatFloat

     編輯:Delphi

FormatFloat 格式化浮點數完全指南

FormatFloat 用於將浮點數 (Extended) 按指定格式字符串轉換為字符串。本文通過豐富示例演示各種格式字符的用法與效果。

函數原型

function FormatFloat(const Format: string; Value: Extended): string;

格式字符說明

字符含義示例結果
0必須顯示的數字位,不足補 0FormatFloat('000.000', 12.3456)012.346
#可選數字位,不足不補 0FormatFloat('###.###', 12.3456)12.346
.小數點位置FormatFloat('0.000', 12.3)12.300
,千位分隔符FormatFloat('#,#.#', 1234567)1,234,567
E+ / e+科學計數法FormatFloat('0.00E+0', 1234567)1.23E+6

完整示例代碼

var
  s: string;
begin
  // 基本格式
  s := FormatFloat('###.###', 12.3456);    // 12.346 (四捨五入)
  s := FormatFloat('000.000', 12.3456);    // 012.346 (補零)
  s := FormatFloat('#.###', 12.3);         // 12.3 (不補零)
  s := FormatFloat('0.000', 12.3);         // 12.300 (強制三位小數)
  
  // 千位分隔符
  s := FormatFloat('#,#.#', 1234567);      // 1,234,567
  s := FormatFloat('0,0.0', 1234567);      // 1,234,567.0
  
  // 科學計數法
  s := FormatFloat('0.00E+0', 1234567);    // 1.23E+6
  s := FormatFloat('0.00E+00', 1234567);   // 1.23E+06
  
  // 科學計數法中 # 似乎不適用?
  ShowMessage(s);
end;

格式字符串構建規則

  1. 整數部分:0 表示必須顯示位,# 表示可選位
  2. 小數部分:小數點後的 0 強制顯示位數,# 可選
  3. 分組:, 在整數部分每三位插入分隔符 (受區域設置影響)
  4. 指數:E+, E-, e+, e- 後跟 0 指定指數位數
  5. 字面量:非格式字符原樣輸出,或用 '' 包裹

常用模式速查

// 貨幣顯示 (兩位小數、千位分隔)
FormatFloat('#,##0.00', Value)

// 百分比 (乘 100 加 %)
FormatFloat('0.00"%"', Value * 100)

// 固定寬度右對齊 (需配合 Format)
Format('%10s', [FormatFloat('0.00', Value)])

// 科學計數 (指數兩位)
FormatFloat('0.00E+00', Value)

// 純整數部分
FormatFloat('0', Value)  // 等同 IntToStr(Round(Value))

區域設置敏感性

  • 小數點字符:受 DecimalSeparator 影響 (中文環境通常為 .)
  • 千位分隔符:受 ThousandSeparator 影響
  • 科學計數法指數符號:通常為 E 或 e
  • 可通過 TFormatSettings 顯式指定區域設置 (D2009+)

精度與四捨五入

  • Extended 精度約 19-20 位有效數字
  • 格式化時按指定小數位 四捨五入
  • 超出精度範圍的極大/極小值可能顯示為科學計數法或溢出

性能提示

頻繁調用時,考慮:

  • 重用格式字符串常量
  • 批量處理減少函數調用開銷
  • 極高性能場景下手動實現 (如查表法)

FormatFloat 是 Delphi 格式化浮點數輸出的核心函數,掌握其格式字符語法,能輕松應對各種數值顯示需求。

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