Какая разница между ToString ( "D2" ). ToString ( "00" )

Я только заметил, что некоторые из моих кодов используют:

ToString("D2")

и других целей:

.ToString("00")

Оба используются для преобразования чисел от 0 до 99 в строки от 00 до 99. Это строки, где числа 0-9 имеют начальный ноль.

Оба эти метода делают то же самое?

Это интересный вопрос. Единственная разница, которую я нашел до сих пор:

Формат

"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.
27
ответ дан 24 окт. '12 в 8:42
источник

Из Строки пользовательского числового формата MSDN:

Спецификатор "00" вызывает округление значения до ближайшей цифры, предшествующей десятичной, где всегда используется округление от нуля. Например, форматирование 34.5 с "00" приведет к значению 35.

И Строки стандартного числового формата MSDN:

Спецификатор точности указывает минимальное количество цифр, которое требуется в полученной строке. При необходимости число заполняется нулями слева, чтобы получить количество цифр, заданных спецификатором точности.

Итак, чтобы ответить на ваш вопрос, согласно документам, это не делает то же самое, но в вашем случае возможно, что они предназначены. Например:

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

Выйдут ли оба из 04. Я бы предположил, что эти два формата используются, потому что D2 недействителен для удвоений.

7
ответ дан 24 окт. '12 в 8:42
источник