如何在C#中将字符串格式的十进制值格式化为指定样式?
如何将Decimal格式化为带千分位且保留两位小数的格式?
你需要的是带千分位分隔符且固定保留两位小数的数字格式,之前使用"N1"只保留了一位小数,导致末尾的0被省略,只需调整格式说明符并确保文化设置正确即可解决。
解决方案
使用"N2"格式说明符,它会自动添加千分位分隔符并强制保留两位小数。同时为了确保千分位用.、小数分隔符用,(匹配你需要的格式),建议显式指定对应的区域文化(比如德语文化de-DE),避免环境默认文化差异导致格式错误。
完整代码示例:
using System.Globalization; string myDecimalString = "9000000,10"; // 显式指定文化解析带逗号的小数字符串 decimal myDecimal = Convert.ToDecimal(myDecimalString, CultureInfo.GetCultureInfo("de-DE")); // 用N2格式+指定文化输出,得到9.000.000,10 Console.WriteLine(myDecimal.ToString("N2", CultureInfo.GetCultureInfo("de-DE")));
补充说明
N2是标准数字格式字符串:N代表数字格式,后面的2表示固定保留两位小数,无论小数部分是否为0都会显示- 如果你的应用运行环境默认文化已经使用
.作为千分位、,作为小数分隔符,也可以省略文化参数,但显式指定能让代码更健壮,不受环境影响 - 也可以用自定义格式字符串实现相同效果:
myDecimal.ToString("#.##0,00", CultureInfo.GetCultureInfo("de-DE")),不过N2更简洁通用
内容的提问来源于stack exchange,提问作者Timgo
相关产品推荐
相关产品推荐

