You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何为String.Format()的货币格式化小数位数设置动态参数?

C# 动态指定货币格式化小数位数实现方案

方法1:动态构造格式字符串适配String.Format

你原来的写法问题在于插值字符串会直接解析0为常量值,而非String.Format的占位符,只需要对格式字符串中的大括号做转义即可实现需求:

var decimals = 2;
var amount = 100m;
var culture = CurrencyProvider.Instance.GetCultureInfo("USD");
// 两个连续大括号会被插值字符串识别为字面量大括号输出
string formatTemplate = $"{{0:C{decimals}}}";
return String.Format(culture, formatTemplate, amount);

方法2:直接使用ToString重载(更简洁)

不需要借助String.Format,直接调用decimal的ToString重载就能实现相同效果,语法更精简:

var decimals = 2;
var amount = 100m;
var culture = CurrencyProvider.Instance.GetCultureInfo("USD");
return amount.ToString($"C{decimals}", culture);

注意:传入的小数位数需为合法非负整数,超出区域文化支持范围的取值会自动fallback到对应货币的默认小数位数。


内容的提问来源于stack exchange,提问作者Mihály Dombi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 11:06:02