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

如何使用格式字符串从decimal类型获取整数?D格式符报错问题

C#中D格式说明符为何无法作用于decimal类型?

刚好碰到过这个问题,给你梳理下:
在C#里,D(十进制)格式说明符的设计目标是将整数类型转换为由0-9组成的纯十进制字符串,负数会自动带上负号,但它从一开始就不支持decimal类型——如果强行对decimal变量使用D格式,就会抛出Format specifier was invalid.的异常,比如下面的代码:

var val = 1234.00M; 
// 执行这行会抛出异常:Format specifier was invalid.
string.Format("{0:D}", val); 
// 这行同样会抛出相同的异常
val.ToString("D");

如果你想实现类似D格式的效果(即显示无小数位的数字字符串),可以根据你的需求选择这些替代方案:

  • 如果你能确定decimal的值是整数(比如示例中的1234.00M),可以先将它转换为整数类型(如int或long)再使用D格式:
    var val = 1234.00M;
    string result = ((int)val).ToString("D"); // 输出 "1234"
    
  • 如果不确定值是否为整数,或者想安全地保留整数部分显示,可以使用F0格式符(自动去掉小数部分并四舍五入),或者自定义格式字符串:
    var val = 1234.56M;
    // 使用F0,输出四舍五入后的整数部分
    string result1 = val.ToString("F0"); // 输出 "1235"
    // 使用自定义格式,直接取整数部分
    string result2 = val.ToString("#"); // 输出 "1235"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:29:51