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

如何正确使用NumberFormatInfo自定义小数的格式设置?

自定义小数格式的正确实现方式

先纠正你代码里的两个关键错误:

  • PerMilleSymbol是用来设置**千分比符号(‰)**的,和千位分隔符完全无关,千位分隔符确实应该用NumberGroupSeparator。
  • NumberDecimalDigits并非仅适用于整数,它控制的是数值格式化时默认的小数位数,只要用对格式化方式就能生效。

完整正确代码示例

// 创建并配置NumberFormatInfo实例
var nfi = new NumberFormatInfo();
nfi.NumberDecimalDigits = 4;          // 控制小数位数
nfi.NumberDecimalSeparator = "@";     // 控制小数分隔符
nfi.NumberGroupSeparator = "^";       // 控制千位分隔符
nfi.NumberGroupSizes = new int[] { 3 }; // 设置千位分组位数(默认3位,可自定义)

// 测试格式化不同数值
decimal num1 = 123456.789m;
string formatted1 = num1.ToString("N", nfi); // 输出:123^456@7890

double num2 = 9876.54321;
string formatted2 = num2.ToString("N", nfi); // 输出:9^876@5432

关键注意事项

  • 必须使用数值格式字符串(比如"N"代表标准数值格式,或自定义格式"#,##0.0000")来应用NumberFormatInfo,直接调用无参数的ToString()会使用系统默认格式,不会读取你的配置。
  • 若需更灵活的格式控制,可直接用自定义格式字符串结合NumberFormatInfo,比如:
    string formatted = num1.ToString("#,##0.####", nfi);
    
    这里的####对应你设置的NumberDecimalDigits,也可以直接写固定位数,效果一致。
  • NumberDecimalDigits的作用是当使用标准格式字符串(如"N")时,默认显示的小数位数;如果自定义格式字符串指定了小数位数,会覆盖这个设置。

内容的提问来源于stack exchange,提问作者Patrick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 01:22:06