Разработка приложений на языке C#. Полезные настройки. Особые спецификаторы формата, страница 3

    Console.ReadKey(true);

  }

}

}

Как видите, вместо нового класса TestTypes, мы создали продолжение (расширение) старого класса Program.

Выполняйте весь код по шагам (клавиша F11) и, не торопясь анализируйте содержимое окна Autos. Если вам не удалось найти такое окно, дайте команду Debug→Windows→Autos. Анализируя код, обратите внимание на различные способы конкатенации (соединения) строк и одиночных символов при формировании текста для вывода в консольное окно.

Статические методы Write и WriteLine класса Console используют семантику старой функции printf, но они позволяют еще более гибко управлять потоком вывода и форматировать числовые данные. Самостоятельно опробуйте форматы вывода числовых данных. Для этого вместо {0} или {1} попробуйте вставить что-то вроде: {0:X8}, или {1:C}, {1:f3}. Действуют следующие спецификаторы формата: C — currency, D — decimal, E — exponent, F — fixed, G — general, N — number, P — percent, X — hexadecimal (пользуйтесь Help). Если вы хотите вывести вещественные числа с выравниванием по правому краю, то сначала надо вычислить необходимое число позиций, а затем использовать его в спецификаторе формата (см. {0,12:f2}).

Особые спецификаторы формата (Custom Format Specifiers)

Материал этого параграфа не обязателен, советую выполнить его дома, так как в классе дорого время. Рассмотрим особенности форматирования числовых данных. Если стандартные спецификаторы формата вас не удовлетворяют, то можно использовать шаблоны типа picture (что-то подобное есть и в языке С). Picture — это специальная строка, которая определяет количество разрядов в строковом представлении числа, способ отображения отрицательных чисел, показателя степени, местоположение знака минус и т.д. Пользуйтесь таблицей, которая приведена ниже, но только при необходимости. Сейчас важно понять концепцию, а не запоминать детали.

Спецификатор

Назначение

Описание

0

Ведущие нули и их количество

Если в числе меньше разрядов, чем количество нулей в спецификаторе, то будут отображены ведущие нули

#

Показывать значащие разряды

Вместо местодержателя (#) будут отображены значащие разряды

.

Десятичная точка

Указывает позицию разделителя десятичной дроби

,

Разделитель групп

Показывать разделители групп, например: 5,777,666

%

Показывать знак процента

Умножает на 100 и показывает знак %

E+0, E-0

e+0, e-0

Способ отображения

Задает способ отображения показателя степени. Например: 1e-6, или 1E-6.

\

Признак служебного символа

Например: \n (newline)

'ABC', "ABC"

Literal string

Отображает кавычки или апострофы (literally)

;

Разделитель секций

Как отображать положительные числа, отрицательные числа и нуль

Следующие примеры показывают суть форматирующих преобразований (опробуйте их в рамках вашего проекта):

Console.WriteLine ("{0:#0}", 10);        // Будет выведено    10

Console.WriteLine ("{0:0#0}", 10);       // 010

Console.WriteLine ("{0:#0}", -10);       // -10

Console.WriteLine ("{0:#0;(#0)}", -10);  // (10)  Так принято выводить отрицательные числа в западных культурах

Console.WriteLine ("{0:#0;(#0);<zero>}", 0); // <zero>

Console.WriteLine ("{0,4:#%}", 0.2);     //  20%

Console.WriteLine ("{0,4:#%}", -0.2);    // -20%

Console.WriteLine ("{0:#%}", 0);         // %

Console.WriteLine ("{0:#0}", int.MaxValue);      // 2147483647

Console.WriteLine ("{0:0,#0}", int.MaxValue);  // 2 147 483 647

Console.WriteLine ("{0:#e0}", int.MaxValue);   // 2e9

Console.WriteLine ("{0:#e00}", int.MaxValue);       // 2e09

Console.WriteLine ("{0:0.00#e000}", float.MinValue);    // -3.403e038