如何在C#中格式化Decimal类型并保留末尾0实现规范货币展示
问题根因
你当前使用的格式化字符串中,.##里的#属于可选数字占位符,仅当对应位置存在有效非零数字时才会渲染,因此小数部分末尾的0会被自动省略,无法满足保留两位小数的需求。
调整方案
只需要将格式串里的可选占位符#替换为强制数字占位符0即可,0占位符无论对应位置是否为0都会强制显示:
String.Format(culture, "{0:$#,#.00;($#,#.00)}", rdr.GetDecimal(10))
修改后示例数值2471450.5会被格式化为$2,471,450.50,负数也会同步遵循括号格式保留两位小数。
补充说明
如果不需要固定使用$符号,需要跟随传入的culture参数自动适配对应地区的货币符号、千位分隔符规则,可以直接使用标准货币格式符C2,写法更简洁:
String.Format(culture, "{0:C2}", rdr.GetDecimal(10))
C2代表保留2位小数的货币格式,原生适配正负值的展示规则。
内容的提问来源于stack exchange,提问作者Partha
相关产品推荐
相关产品推荐

