在C#开发中,数字格式化是非常常见的需求,无论是展示金额、统计百分比还是控制小数位数,都需要用到相关的格式化方法。下面我们通过多种方式结合代码示例,详细讲解C#中数字格式化的实现方法。

一、使用ToString方法格式化数字
ToString方法是C#中所有类型都继承的基础方法,数字类型可以通过传入格式字符串实现格式化,是最常用的格式化方式之一。
using System;
class Program
{
static void Main()
{
double num = 1234.5678;
// 货币格式,默认会添加当前区域货币符号
Console.WriteLine(num.ToString("C")); // 输出:¥1,234.57
// 保留2位小数的固定点格式
Console.WriteLine(num.ToString("F2")); // 输出:1234.57
// 百分比格式,会自动乘100加百分号
Console.WriteLine(num.ToString("P")); // 输出:123,456.78%
// 十六进制格式,仅支持整数类型
int intNum = 255;
Console.WriteLine(intNum.ToString("X")); // 输出:FF
}
}二、使用String.Format方法格式化
String.Format方法支持复合格式化,可以在一个字符串中插入多个格式化后的数字,适合拼接复杂输出内容的场景。
using System;
class Program
{
static void Main()
{
int count = 12;
double price = 29.9;
// 复合格式化,{0}对应第一个参数,C2表示货币格式保留2位小数
string result = String.Format("购买了{0}件商品,总价为:{1:C2}", count, price);
Console.WriteLine(result); // 输出:购买了12件商品,总价为:¥29.90
// 控制数字补零,D4表示整数最少4位,不足补零
int orderId = 123;
Console.WriteLine(String.Format("订单编号:{0:D4}", orderId)); // 输出:订单编号:0123
}
}三、自定义格式字符串
如果内置格式符无法满足需求,可以使用自定义格式字符串,通过#、0、.等符号自定义输出规则。
using System;
class Program
{
static void Main()
{
double num = 12.3;
// 0表示占位符,不足补0;#表示可选占位符,不足不补
Console.WriteLine(num.ToString("000.00")); // 输出:012.30
Console.WriteLine(num.ToString("###.##")); // 输出:12.3
// 添加分隔符,千分位显示
long bigNum = 123456789;
Console.WriteLine(bigNum.ToString("#,###")); // 输出:123,456,789
// 自定义百分比格式
double rate = 0.1234;
Console.WriteLine(rate.ToString("0.00%")); // 输出:12.34%
}
}四、使用IFormatProvider实现多区域格式化
当需要根据不同区域的语言文化展示数字格式时,可以通过IFormatProvider接口指定区域规则,最常用的实现是CultureInfo类。
using System;
using System.Globalization;
class Program
{
static void Main()
{
double price = 1234.5;
// 美国区域,货币符号为$
CultureInfo usCulture = new CultureInfo("en-US");
Console.WriteLine(price.ToString("C", usCulture)); // 输出:$1,234.50
// 日本区域,货币符号为¥
CultureInfo jpCulture = new CultureInfo("ja-JP");
Console.WriteLine(price.ToString("C", jpCulture)); // 输出:¥1,235
// 固定区域,不受系统区域设置影响
CultureInfo invariantCulture = CultureInfo.InvariantCulture;
Console.WriteLine((1234.56).ToString("F2", invariantCulture)); // 输出:1234.56
}
}五、常用格式符对照表
下面整理了C#数字格式化中常用的内置格式符及其作用,方便开发时快速查询:
| 格式符 | 说明 | 示例 | 输出结果 |
|---|---|---|---|
| C / c | 货币格式 | 123.4.ToString("C") | ¥123.40 |
| D / d | 十进制格式,仅支持整数 | 12.ToString("D3") | 012 |
| F / f | 固定点格式,指定小数位数 | 12.3456.ToString("F2") | 12.35 |
| P / p | 百分比格式 | 0.12.ToString("P") | 12.00% |
| N / n | 数字格式,带千分位 | 12345.ToString("N") | 12,345.00 |
| X / x | 十六进制格式,仅支持整数 | 255.ToString("X") | FF |
通过以上几种方式,就可以覆盖C#开发中绝大多数数字格式化的需求。实际使用时可以根据场景选择合适的方法,简单单数字格式化用ToString即可,多参数拼接用String.Format,特殊规则用自定义格式字符串,多区域场景记得指定IFormatProvider。
C#数字格式化ToString方法String.FormatIFormatProvider修改时间:2026-05-29 03:53:39