| 規格 | 名稱 | 說明 | 範例 (1234.5) |
|---|---|---|---|
| 0 | 零佔位符 | 有數字顯示數字,無則顯示 0 | 0000.00 → 1234.50 |
| # | 數字佔位符 | 有數字顯示數字,無則留空 | ####.## → 1234.5 |
| . | 小數點 | 依 Culture 決定字元 | 0.00 → 1234.50 |
| , | 千分位分隔/縮放 | 格式字串中出現則啟用千分位;靠近小數點時為縮放 | #,# → 1,234.5 |
| % | 百分比 | 乘 100 並加 % | 0% → 123450% |
| ‰ | 千分比 | 乘 1000 並加 ‰ | |
| E / e | 科學標記法 | 指數部分 | 0.00E+0 → 1.23E+3 |
| \c | 跳脫字元 | 顯示字面字元 c | \#0 → #1234 |
| '...' | 字面字串 | 單引號包裹 | 'USD '0.00 → USD 1234.50 |
| ; | 區段分隔 | 正數;負數;零;Null 四區段 | +0;-0;Zero |
// 標準金額:千分位、兩位小數、不足補零
decimal amt = 1234567.5m;
amt.ToString("###,###,###,##0.00") // 1,234,567.50
amt.ToString("N2") // 1,234,567.50 (標準格式 N2 等效)
// 會計格式:負數用括號、貨幣符號
amt.ToString("C2", new CultureInfo("zh-TW")) // NT$1,234,567.50
(-amt).ToString("C2", new CultureInfo("en-US")) // ($1,234,567.50)
// 固定寬度靠右 (報表對齊)
amt.ToString("0,0.00").PadLeft(15) // " 1,234,567.50"
// 科學記號
(0.00123m).ToString("0.00E+00") // 1.23E-03
///
/// 依精度產生金額格式字串:###,###,##0.00...
///
public string FormatAmount(decimal value, int decimalPlaces)
{
if (decimalPlaces < 0) decimalPlaces = 0;
if (decimalPlaces > 10) decimalPlaces = 10; // 限制上限
string format = "###,###,###,##0";
if (decimalPlaces > 0)
format += "." + new string('0', decimalPlaces); // 小數點後全用 0 佔位
return value.ToString(format);
}
// 使用範例
Console.WriteLine(FormatAmount(1234.5m, 2)); // 1,234.50
Console.WriteLine(FormatAmount(1234.5m, 4)); // 1,234.5000
Console.WriteLine(FormatAmount(1000000m, 0)); // 1,000,000
string fmt = "###,##0.00;(###,##0.00);Zero;Null";
1234.5m.ToString(fmt) // 1,234.50
(-1234.5m).ToString(fmt) // (1,234.50)
0m.ToString(fmt) // Zero
// Null 區段僅用於 nullable 型別 (decimal?) 為 null 時
var val = 1234567.89m;
val.ToString("N2", CultureInfo.GetCultureInfo("zh-TW")) // 1,234,567.89 (千分位逗號、小數點)
val.ToString("N2", CultureInfo.GetCultureInfo("de-DE")) // 1.234.567,89 (千分位句點、小數逗號)
val.ToString("N2", CultureInfo.InvariantCulture) // 1,234,567.89 (固定美式)
ToString("N2") 等標準格式比自訂格式快 ~10-15% (內部快取)。NumberFormatInfo 物件重用。string.Format / FormattableString 多參數時效能優於插值字串。傳入參數:FormatAmount(2.0, 10)
輸出結果:

原文連結:https://www.bianceng.cn/Programming/csharp/201410/45584.htm
MSDN 官方文件:Custom numeric format strings