C# 为什么十进制最小值不转换为字符串?
以下控制台应用程序崩溃:C# 为什么十进制最小值不转换为字符串?,c#,.net,format,decimal,C#,.net,Format,Decimal,以下控制台应用程序崩溃: decimal dec = decimal.MinValue; string str = string.Format("{0:d}", dec); Console.WriteLine(str); 错误是: Format specifier was invalid. 考虑到我基本上是将十进制格式化为十进制,这有什么问题?来自: 只有整数类型才支持此格式 decimal不是整数类型 格式类型被称为“decimal”这一事实基本上是不幸的。这是因为它以10为基数格式化整
decimal dec = decimal.MinValue;
string str = string.Format("{0:d}", dec);
Console.WriteLine(str);
错误是:
Format specifier was invalid.
考虑到我基本上是将十进制格式化为十进制,这有什么问题?来自:
只有整数类型才支持此格式
decimal
不是整数类型
格式类型被称为“decimal”这一事实基本上是不幸的。这是因为它以10为基数格式化整数,但它与decimal
类型没有直接关系
我怀疑您想要F
、G
或N
(或者根据您的实际需求,可能需要其他一些东西,这些东西并不十分清楚)。关于将十进制值转换为字符串:
format参数可以是任何有效的标准数字格式
除D、R和X之外的说明符,以及自定义
数字格式说明符。如果格式为null或空字符串,则
此实例的返回值的格式为常规数字
格式说明符(G)
所以,你可以用G
string str = string.Format("{0:G}", dec);
阅读了解更多信息。问题在于格式标识符{0:d}
试一试
试一试
发件人:
format参数可以是除D、R和X之外的任何有效的标准数字格式说明符
在这里,它说的是d
格式:
支持:仅限整数类型
因为格式说明符不符合您的想法。它仅适用于整数,尽管名称为Decimal
。有关详细信息,请参阅。我没有任何实际要求。我只是发现了这个,不知道为什么happening@pm_2:在这种情况下,答案基本上是“因为它不适合工作”:)这是一个很好的理由。你是对的,这个名字确实很不幸
string.Format("{0}", dec)
decimal dec = decimal.MinValue;
string str = string.Format("F: {0}", dec);
Console.WriteLine(str);