Управление форматом числовых данных в C#
При отображении данных на экране или при печати может потребоваться явное указание формы (формата) вывода, например, указание занимаемых позиций для числа при выводе таблиц, положение десятичной точки (запятой), количество цифр после десятичной точки и т. д. Для выполнения вывода в классе Console имеются две функции: WriteLine и Write. Они отличаются тем, что функция WriteLine после вывода заданных данных выполняет переход на новую строку, а функция Write этого не делает. Аргументы этих функций состоят из текстовой строки, заключенной в кавычки, после которой (не обязательно) перечисляются имена переменных для вывода. Если выводятся значения переменных, то в строке для каждой переменной в фигурных скобках указывается номер переменной списке.
Обычно номера в строке (в парах фигурных скобок) и позиции переменных в списке совпадают. Возможны также исключения. Например, можно повторить номер какой-либо переменной, тогда ее значение будет выведено повторно. Если же изменить порядок следования чисел в фигурных скобках, то значения переменных будут выводиться именно в этом порядке, а не в порядке записи переменных в списке.
Вместо имен переменных в списке могут использоваться арифметические выражения. Каждому такому выражению должен соответствовать номер в фигурных скобках.
Примеры.
Пусть объявлены переменные:
int a = 3, b = 4;
Тогда операторы вывода
Console.WriteLine("Примеры вывода");// Строка формата выводит только текст
// В строке формата нумерация вывода в скобках и номера в списке совпадают
Console.WriteLine("Обычный порядок: сначала a = {0} потом b = {1}", a, b);
// В строке формата повтор номера в скобках, 2-я переменная не выводится
Console.WriteLine("Повтор вывода a = {0} и a = {0} потом b = {1}", a, b);
// Нумерация вывода в скобках и номера в списке переменных не совпадают
Console.WriteLine("Обратный порядок: сначала b = {1} потом a = {0}", a, b);
// В списке переменных арифметическое выражение
Console.WriteLine("Если a = {0} и b = {1}, то сумма = {2} ", a, b, a + b);
Обеспечат вывод:
Для явного указания формата вывода после числа, указывающего на номер переменной для вывода, записывают двоеточие, после которого указывают форматный код. Если требуется жестко задать количество позиций для вывода значения переменной, то сначала после номера переменной записывают запятую, затем количество позиций. Если требуется форматный код, то он записывается после двоеточия, которое следует за количеством позиций для вывода.
Форматный код состоит из латинской буквы (заглавной или строчной), после которой записывается целое число, характеризующее данный формат. Ниже в таблице приведены форматные коды.
Код Описание и назначение формата Смысл числа после кода формата
C Денежный. По умолчанию указывается символ обозначения валюты для текущего регионального стандарта. Задает общее количество десятичных разрядов.
D Целочисленный Задает количество цифр для представления числа. Если число имеет меньше заданного количества цифр, перед числом записываются нули.
E Экспоненциальный Задает количество цифр после десятичной запятой (мантиссу). По умолчанию мантисса содержит 6 цифр
F С фиксированной точкой Задает количество цифр после запятой
G Обобщенный формат Задается общее количество символов. В зависимости от заданной длины представления числа выбирается экспоненциальный формат или формат с фиксированной точкой (который может быть размещен в заданной длине). Если число целое, то оно выводится без дробной части.
N Использование разделителей между группами цифр числа Между группами из 3 цифр вставляется разделитель, заданный региональными стандартами (для РФ пробел). По умолчанию дробная часть 2 цифры.
X Шестнадцатеричный формат Выводит целое число в шестнадцатеричной системе счисления (без 0x, например, так: 124F816)
P Процентный Выводит число в виде процентов, например, 0.75 будет выведено как 75.00%. Если число большое, то между группами из 3 цифр вставляется разделитель.
Далее приведен фрагмент программы и скриншот выполнения этого фрагмента для демонстрации форматных кодов
int n = 53, m =148, k = 85000;
double x = 345.66, y = 26, z = 0.65;
Console.WriteLine(" Форматный код");
Console.WriteLine("0,4:D 1,10:F2 1,10:E2 1,10:G2
");
Console.WriteLine(" Форма вывода");
Console.WriteLine(" {0,4:D} {1,10:F2} {1,10:E2} {1,10:G2}", n, x, x, x);
Console.WriteLine(" {0,4:D} {1,10:F2} {1,10:E2} {1,10:G2}", m, y, y, y);
Console.WriteLine("
Форматный код");
Console.WriteLine(" 0,8:X 1,8:P 2:n
");
Console.WriteLine(" Форма вывода");
Console.WriteLine(" {0,6:X} {1,10:p} {2:n}", k, z, 1000000000)
Примечание: Первая цифра в форматном коде – это номер переменной для вывода.
Во всех приведенных выше в скриншоте примерах выполнено выравнивание чисел вправо, поэтому слева от чисел вставляются пробелы для получения заданной ширины вывода.
Переопределение для упрощения вывода, раскатать пример
public override string ToString()
{
return string.Format("[{0}, {1}]", xPos, yPos);
}
Управление форматом числовых данных в C#
Лекции по предмету «Программирование»