41

我刚刚注意到我的一些代码用途:

ToString("D2")

和其他用途:

.ToString("00")

两者都用于将 0 到 99 的数字转换为 00 到 99 的字符串。这是数字 0-9 有前导零的字符串。

这两种方法都做同样的事情吗?

4

2 回答 2

39

这是一个有趣的问题。到目前为止,我发现的唯一区别是:

格式“D2”仅接受整数类型值。格式“00”也适用于浮点数/双精度数。

格式 D - MSDN

支持者:仅整数类型。

考虑以下三行:

double d = 23.05123d;
int i = 3;
Console.Write(i.ToString("D2"));
Console.Write(d.ToString("00"));
Console.Write(d.ToString("D2")); //this will result in exception: 
                                 //Format specifier was invalid.
于 2012-10-24T05:42:52.610 回答
12

来自MSDN 自定义数字格式字符串

“00”说明符使值四舍五入到小数点前最接近的数字,其中始终使用从零开始的四舍五入。例如,使用“00”格式化 34.5 将导致值 35。

MSDN 标准数字格式字符串

精度说明符指示结果字符串中所需的最小位数。如果需要,该数字在其左侧填充零以产生精度说明符给出的位数。

所以要回答你的问题,根据文档,这些并不是专门做同样的事情,但在你的情况下,它们可能是有意的。例如:

double d = 3.678;
Console.WriteLine(d.ToString("00"));
Console.WriteLine(4.ToString("D2"));

都会打印出来04。我想这两种格式正在被使用,因为D2对双打无效。

于 2012-10-24T05:42:53.993 回答