Ввод/вывод
Консольный вывод. Форматирование
Помимо индекса параметра, маркер выводимого значения может содержать дополнительные сведения относительно формата представления выводимой информации. Выводимые значения преобразуются к символьному представлению, которое, в свою очередь, при выводе в окно приложения может быть дополнительно преобразовано в соответствии с предопределенным "сценарием преобразования". Вся необходимая для дополнительного форматирования информация размещается непосредственно в маркерах и отделяется запятой от индекса маркера.
Таким образом, в операторах вывода можно определить область позиционирования выводимого значения. Например, результатом выполнения следующего оператора вывода:
Console.WriteLine("***{0,10}***",3.14);
будет следующая строка:
***3.14 ***
А выполнение такого оператора:
Console.WriteLine("***{0,–10}***",3.14);
приведет к следующему результату:
*** 3.14***
Кроме того, в маркерах вывода могут также размещаться дополнительные строки форматирования ( FormatString ). При этом маркер приобретает достаточно сложную структуру, внешний вид которой в общем случае можно представить следующим образом ( M – значение индекса, N – область позиционирования):
{M,N:FormatString},
либо
{M:FormatString},
если не указывается значение области позиционирования.
Сама же строка форматирования аналогична ранее рассмотренной строке – параметру метода ToString и является комбинацией предопределенных символов форматирования и дополнительных целочисленных значений.
Непосредственно за символом форматирования может быть расположена целочисленная ограничительная константа, которая, в зависимости от типа выводимого значения, может определять количество выводимых знаков после точки либо общее количество выводимых символов. При этом дробная часть действительных значений округляется или дополняется нулями справа. При выводе целочисленных значений ограничительная константа игнорируется, если количество выводимых символов превышает ее значение. В противном случае выводимое значение слева дополняется нулями.
Следующие примеры иллюстрируют варианты применения маркеров со строками форматирования:
Console.WriteLine("Integer fotmating – {0:D3},{1:D5}",12345, 12); Console.WriteLine("Currency formatting – {0:C},{1:C5}", 99.9, 999.9); Console.WriteLine("Exponential formatting – {0:E}", 1234.5); Console.WriteLine("Fixed Point formatting – {0:F3}", 1234.56789); Console.WriteLine("General formatting – {0:G}", 1234.56789); Console.WriteLine("Number formatting – {0:N}", 1234567.89); Console.WriteLine("Hexadecimal formatting – {0:X7}",12345);//Integers only!
В результате выполнения этих операторов в окно консольного приложения будут выведены следующие строки:
Integer fotmating – 12345,00012 Currency formatting – $99.90,$999.90000 Exponential formatting – 1.234500E+003 Fixed Point formatting – 1234.568 General formatting – 1234.56789 Number formatting – 1,234,567.89 Hexadecimal formatting – 0003039