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

Delphi 格式化輸出函數詳解(三):FormatFloat 實數格式化完全指南

     編輯:Delphi

前言

FormatFloat 是 Delphi 專門用於浮點數/實數格式化的強大函數,格式字串支援數字佔位符、分組分隔符、科學計數法等豐富語法。本文通過大量實例詳細解析各格式指令的效果。

函數原型

function FormatFloat(const Format: string; Value: Extended): string;
  • Format:格式指令字串。
  • Value:Extended 類型實數值。

格式指令語法速查

符號含義
0數字佔位符,不足位補 0
#數字佔位符,不足位不補 0
.小數點位置
,千分位分組分隔符(按當地設置顯示為 , 或 . 或空格)
E+ / e+科學計數法,指數至少 2 位,+ 表示總是顯示符號
E- / e-科學計數法,指數至少 2 位,僅負指數顯示符號
"文字"原樣輸出文字(雙引號包裹)
; 分隔正數;負數;零值 三段式格式

實例演示(對應原始代碼)

var s: string;
begin
  s := FormatFloat('###.###', 12.3456);     {返回: 12.346  四捨五入, 無前導 0}
  s := FormatFloat('000.000', 12.3456);     {返回: 012.346  固定 3 位整數 3 位小數}
  s := FormatFloat('#.###', 12.3);          {返回: 12.3    不補尾隨 0}
  s := FormatFloat('0.000', 12.3);          {返回: 12.300  強制 3 位小數}
  s := FormatFloat('#,#.#', 1234567);       {返回: 1,234,567  千分位分隔, 1 位小數}
  s := FormatFloat('0,0.0', 1234567);       {返回: 1,234,567.0  固定 1 位小數}
  s := FormatFloat('0.00E+0', 1234567);     {返回: 1.23E+6    科學計數, 指數無前導 0}
  s := FormatFloat('0.00E+00', 1234567);    {返回: 1.23E+06   科學計數, 指數固定 2 位}
  {註: 科學計數法中使用 # 可能導致格式不穩定, 建議用 0}
  ShowMessage(s);
end;

進階技巧

1. 區段格式(正/負/零)

FormatFloat('#.##;(#.##);Zero', -12.3);  {返回: (12.30) 負數用括號}
FormatFloat('#.##;(#.##);Zero', 0);      {返回: Zero}

2. 區域感知分隔符

, 在格式字串中永遠代表「啟用千分位分隔」,實際顯示字符由系統 FormatSettings.ThousandSeparator 決定(中文環境通常為 ,,歐洲部分國家為 . 或空格)。

3. 固定科學計數法指數位數

FormatFloat('0.00E+00', 123);   {1.23E+02}
FormatFloat('0.00E+000', 123);  {1.23E+002}

4. 處理極大/極小數值

FormatFloat('0.00E+00', 1e-10);  {1.00E-10}
FormatFloat('0.00E+00', 1e10);   {1.00E+10}

常見陷阱

  • 四捨五入:FormatFloat('#.##', 1.235) 返回 1.24(銀行家圓整規則視 RTL 版本而定)。
  • 整數部分全 #:FormatFloat('###', 0) 返回空字串,建議至少一個 0('##0')。
  • 科學計數法大小寫:E 輸出大寫 E,e 輸出小寫 e。

總結

FormatFloat 以靈活的格式字串覆蓋了從定點小數、千分位分隔到科學計數法的所有常見實數顯示需求,掌握 0/#/,/E 四大核心符號即可應對絕大多數格式化場景。

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