FormatFloat 用於將浮點數 (Extended) 按指定格式字符串轉換為字符串。本文通過豐富示例演示各種格式字符的用法與效果。
function FormatFloat(const Format: string; Value: Extended): string;
| 字符 | 含義 | 示例 | 結果 |
|---|---|---|---|
0 | 必須顯示的數字位,不足補 0 | FormatFloat('000.000', 12.3456) | 012.346 |
# | 可選數字位,不足不補 0 | FormatFloat('###.###', 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;
0 表示必須顯示位,# 表示可選位0 強制顯示位數,# 可選, 在整數部分每三位插入分隔符 (受區域設置影響)E+, E-, e+, e- 後跟 0 指定指數位數'' 包裹// 貨幣顯示 (兩位小數、千位分隔)
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 或 eTFormatSettings 顯式指定區域設置 (D2009+)Extended 精度約 19-20 位有效數字頻繁調用時,考慮:
FormatFloat 是 Delphi 格式化浮點數輸出的核心函數,掌握其格式字符語法,能輕松應對各種數值顯示需求。