ToString(“D2”)之间有什么区别.ToString(“00”)

时间:2012-10-24 05:32:43

标签: c#

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

ToString("D2")

和其他用途:

.ToString("00")

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

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

2 个答案:

答案 0 :(得分:34)

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

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

Format 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.

答案 1 :(得分:9)

来自MSDN Custom Numeric Format Strings

  

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

MSDN Standard Numeric Format Strings

  

精度说明符表示结果字符串中所需的最小位数。如果需要,数字用左边的零填充,以产生精度说明符给出的位数。

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

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

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