Какая разница между ToString ( "D2" ). ToString ( "00" )
Я только заметил, что некоторые из моих кодов используют:
ToString("D2")
и других целей:
.ToString("00")
Оба используются для преобразования чисел от 0 до 99 в строки от 00 до 99. Это строки, где числа 0-9 имеют начальный ноль.
Оба эти метода делают то же самое?
Ответы
Ответ 1
Это интересный вопрос. Единственная разница, которую я нашел до сих пор:
Формат "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.
Ответ 2
Из Строки пользовательского числового формата MSDN:
Спецификатор "00" вызывает округление значения до ближайшей цифры, предшествующей десятичной, где всегда используется округление от нуля. Например, форматирование 34.5 с "00" приведет к значению 35.
И Строки стандартного числового формата MSDN:
Спецификатор точности указывает минимальное количество цифр, которое требуется в полученной строке. При необходимости число заполняется нулями слева, чтобы получить количество цифр, заданных спецификатором точности.
Итак, чтобы ответить на ваш вопрос, согласно документам, это не делает то же самое, но в вашем случае возможно, что они предназначены. Например:
double d = 3.678;
Console.WriteLine(d.ToString("00"));
Console.WriteLine(4.ToString("D2"));
Выйдут ли оба из 04
. Я бы предположил, что эти два формата используются, потому что D2
недействителен для удвоений.