Российский Государственный Технологический Университет им. К.Э. Циолковского
Опубликован: 02.03.2007 | Доступ: свободный | Студентов: 5678 / 802 | Оценка: 3.96 / 3.45 | Длительность: 27:04:00
ISBN: 978-5-9556-0086-4
Лекция 11:

Ввод/вывод

Консольный вывод. Форматирование

Помимо индекса параметра, маркер выводимого значения может содержать дополнительные сведения относительно формата представления выводимой информации. Выводимые значения преобразуются к символьному представлению, которое, в свою очередь, при выводе в окно приложения может быть дополнительно преобразовано в соответствии с предопределенным "сценарием преобразования". Вся необходимая для дополнительного форматирования информация размещается непосредственно в маркерах и отделяется запятой от индекса маркера.

Таким образом, в операторах вывода можно определить область позиционирования выводимого значения. Например, результатом выполнения следующего оператора вывода:

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
kewezok kewezok
kewezok kewezok
Елена Шляхт
Елена Шляхт
Объясните плиз в чем отличие а++ от ++а
Почему результат разный?
int a=0, b=0;
Console.WriteLine(a++); //0
Console.WriteLine(++b); //1
a++;
++b;
Console.WriteLine(a); //2
Console.WriteLine(b); //2