【问题标题】:Why does decimal min value not convert to a string?为什么十进制最小值不转换为字符串?
【发布时间】:2014-05-01 15:33:45
【问题描述】:

以下控制台应用程序崩溃:

decimal dec = decimal.MinValue;
string str = string.Format("{0:d}", dec);

Console.WriteLine(str);

错误是:

Format specifier was invalid.

鉴于我本质上是将小数格式化为小数,这有什么问题?

【问题讨论】:

    标签: c# .net format decimal


    【解决方案1】:

    来自the documentation

    只有整型支持这种格式。

    decimal 不是整数类型。

    格式类型被称为“十进制”的事实基本上是不幸的。这是因为它以 10 为基数格式化整数,但它与 decimaltype 没有直接关系。

    我怀疑你想要FGN(或者其他可能的东西,根据你的实际要求,这不是很清楚)。

    【讨论】:

    • 我真的没有任何实际要求。我只是发现了这一点,但不知道为什么会发生
    • @pm_2:在那种情况下,答案基本上是“因为它不适合工作”:)
    • 这是一个很好的理由。你是对的 - 命名绝对是不幸的
    【解决方案2】:

    来自MSDN 关于将decimal 值转换为字符串:

    格式参数可以是任何有效的标准数字格式 除了 DRX 之外的说明符,以及自定义的任意组合 数字格式说明符。如果 format 为 null 或空字符串,则 此实例的返回值采用通用数字格式 格式说明符 (G)。

    所以,你可以使用 G。

    string str = string.Format("{0:G}", dec);
    

    阅读this了解更多信息。

    【讨论】:

      【解决方案3】:

      问题在于格式标识符 {0:d} 试试

      string.Format("{0}", dec)
      

      【讨论】:

        【解决方案4】:

        试试

             decimal dec = decimal.MinValue;
             string str = string.Format("F: {0}", dec);
        
             Console.WriteLine(str);
        

        【讨论】:

          【解决方案5】:

          来自the MSDN help for Decimal.ToString()

          格式参数可以是除 D、R 和 X 之外的任何有效的标准数字格式说明符

          the help for Standard Numeric Format Strings 中,它表示d 格式:

          支持:仅整数类型。

          【讨论】:

            【解决方案6】:

            因为格式说明符并没有按照你的想法做。尽管名称为 Decimal,但它仅适用于整数。详情请参阅MSDN documentation

            【讨论】:

              猜你喜欢
              • 2012-02-03
              • 1970-01-01
              • 2020-03-14
              • 2020-06-20
              • 2018-01-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多