在C#开发中,decimal类型常用于存储高精度的金额、数值计算类数据,将这些数据转换为字符串并保留两位小数是非常高频的需求,比如金额展示、报表生成等场景都需要用到这类转换操作。

使用ToString方法实现转换
decimal类型自带的ToString方法支持传入格式化字符串,是最直接的转换方式。要保留两位小数,可以使用标准格式字符串F2,也可以自定义格式字符串。
using System;
class Program
{
static void Main()
{
decimal num1 = 123.4567m;
decimal num2 = 123m;
decimal num3 = 123.4m;
// 使用F2标准格式,自动补零到两位小数
string str1 = num1.ToString("F2");
string str2 = num2.ToString("F2");
string str3 = num3.ToString("F2");
Console.WriteLine(str1); // 输出 123.46
Console.WriteLine(str2); // 输出 123.00
Console.WriteLine(str3); // 输出 123.40
// 使用自定义格式字符串,效果与F2一致
string str4 = num1.ToString("0.00");
string str5 = num2.ToString("0.00");
Console.WriteLine(str4); // 输出 123.46
Console.WriteLine(str5); // 输出 123.00
}
}
两种格式化参数的区别
F2是标准数值格式字符串,会自动按照当前线程的区域设置使用对应的小数点分隔符,比如中文环境下是点号,部分其他区域可能是逗号。0.00是自定义格式字符串,其中0代表占位符,如果对应位置没有数值则会补0,小数点位置固定为点号,不受区域设置影响。
使用String.Format方法实现转换
String.Format方法同样支持格式化字符串,适合需要拼接多个内容的场景,保留两位小数的逻辑和ToString方法一致。
using System;
class Program
{
static void Main()
{
decimal price = 99.9m;
// 拼接字符串时保留两位小数的金额
string result = String.Format("商品价格为:{0:F2}元", price);
Console.WriteLine(result); // 输出 商品价格为:99.90元
// 使用自定义格式字符串
string result2 = String.Format("商品价格为:{0:0.00}元", price);
Console.WriteLine(result2); // 输出 商品价格为:99.90元
}
}
使用插值字符串实现转换
C# 6.0及以上版本支持插值字符串,可以直接在字符串中嵌入表达式并指定格式,写法更简洁。
using System;
class Program
{
static void Main()
{
decimal total = 456.789m;
// 插值字符串中指定格式
string display = $"总金额:{total:F2}";
Console.WriteLine(display); // 输出 总金额:456.79
string display2 = $"总金额:{total:0.00}";
Console.WriteLine(display2); // 输出 总金额:456.79
}
}
注意事项
- decimal类型的数值转换时,格式化操作会进行四舍五入,比如123.456m转换后是123.46,123.454m转换后是123.45。
- 如果需要保留两位小数的同时不显示末尾的零,可以先转换为double再处理,或者使用自定义格式字符串
0.##,但这种方式如果小数位不足两位会只显示实际位数。 - 如果项目需要适配多区域,建议优先使用
F2标准格式,避免自定义格式字符串的小数点分隔符不符合用户习惯。
using System;
class Program
{
static void Main()
{
decimal num = 123.4m;
// 不补末尾零的两位小数格式化
string str = num.ToString("0.##");
Console.WriteLine(str); // 输出 123.4
string str2 = num.ToString("F2");
Console.WriteLine(str2); // 输出 123.40
}
}
C#decimal_to_string保留两位小数格式化修改时间:2026-06-17 17:00:16