C# 4.0: полное руководство | страница 44
>Console.WriteLine("Деление 10/3 дает: " + 10.0/3.0);
который выводит следующий результат.
>Деление 10/3 дает: 3.33333333333333
В одних случаях такого вывода может оказаться достаточно, а в других — он просто недопустим. Например, в финансовых расчетах после десятичной точки принято указывать лишь два десятичных разряда.
Для управления форматированием числовых данных служит другая форма метода >WriteLine(),
позволяющая встраивать информацию форматирования, как показано ниже.
>WriteLine("форматирующая строка", argO, argl, ... , argN);
В этой форме аргументы метода >WriteLine()
разделяются запятой, а не знаком +. А форматирующая строка состоит из двух элементов: обычных печатаемых символов, предназначенных для вывода в исходном виде, а также спецификаторов формата. Последние указываются в следующей общей форме:
>{argnum, width: fmt}
где argnum — номер выводимого аргумента, начиная с нуля; width — минимальная ширина поля; fmt — формат. Параметры width и fmt являются необязательными.
Если во время выполнения в форматирующей строке встречается спецификатор формата, то вместо него подставляется и отображается соответствующий аргумент, обозначаемый параметром argnum. Таким образом, местоположение спецификатора формата в форматирующей строке определяет место отображения соответствующих данных. Параметры width и fmt'указывать необязательно. Это означает, что в своей простейшей форме спецификатор формата обозначает конкретный отображаемый аргумент. Например, спецификатор { 0 } обозначает аргумент агдО, спецификатор {1} — аргумент argl и т.д.
Начнем с самого простого примера. При выполнение оператора
>Console.WriteLine("В феврале {0} или {1} дней.", 28, 29);
получается следующий результат.
>В феврале 28 или 29 дней
Как видите, значение 2 8 подставляется вместо спецификатора { 0 }, а значение 2 9 — вместо спецификатора {1}. Следовательно, спецификаторы формата обозначают место в строке, где отображаются соответствующие аргументы (в данном случае — значения 28 и 29). Кроме того, обратите внимание на то, что дополнительные значения разделяются запятой, а не знаком +.
Ниже приведен видоизмененный вариант предыдущего оператора, в котором указывается ширина полей.
>Console.WriteLine("В феврале {0,10} или {1,5} дней.", 28, 29);
Выполнение этого оператора дает следующий результат.
>В феврале 28 или 29 дней.
Как видите, неиспользуемые части полей заполнены пробелами. Напомним, что минимальная ширина поля определяется параметром