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;
FormatFloat('#.##;(#.##);Zero', -12.3); {返回: (12.30) 負數用括號}
FormatFloat('#.##;(#.##);Zero', 0); {返回: Zero}
, 在格式字串中永遠代表「啟用千分位分隔」,實際顯示字符由系統 FormatSettings.ThousandSeparator 決定(中文環境通常為 ,,歐洲部分國家為 . 或空格)。
FormatFloat('0.00E+00', 123); {1.23E+02}
FormatFloat('0.00E+000', 123); {1.23E+002}
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 四大核心符號即可應對絕大多數格式化場景。