×
Traktatov.net » C# 4.0: полное руководство » Читать онлайн
Страница 36 из 650 Настройки

Ниже приведен видоизмененный вариант предыдущего оператора, в котором указывается ширина полей.


>Console.WriteLine("В феврале {0,10} или {1,5} дней.", 28, 29);


Выполнение этого оператора дает следующий результат.


>В феврале    28 или    29 дней.


Как видите, неиспользуемые части полей заполнены пробелами. Напомним, что минимальная ширина поля определяется параметром width. Если требуется, она может быть превышена при выводе результата.

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


>// Применить команды форматирования.

>using System;

>class DisplayOptions {

>  static void Main() {

>    int i;

>    Console.WriteLine ("Число\tКвадрат\tКуб") ;

>    for(i = 1; i < 10; i++)

>      Console.WriteLine("{0}\t{1}\t{2}", i, i*i, i*i*i);

>  }

>}


Результат выполнения этой программы выглядит следующим образом.


>Число Квадрат Куб

>1     >1       >1

>2     >4       >8

>3     >9       >27

>4     >16      >64

>5     >25      >125

>6     >36      >216

>7     >49      >343

>8     >64      >512

>9     >81      >729


В приведенных выше примерах сами выводимые значения не форматировались. Но ведь основное назначение спецификаторов формата — управлять внешним видом выводимых данных. Чаще всего форматированию подлежат следующие типы данных: с плавающей точкой и десятичный. Самый простой способ указать формат данных — описать шаблон, который будет использоваться в методе >WriteLine(). Для этого указывается образец требуемого формата с помощью символов #, обозначающих разряды чисел. Кроме того, можно указать десятичную точку и запятые, разделяющие цифры. Ниже приведен пример более подходящего вывода результата деления 10 на 3.


>Console.WriteLine("Деление 10/3 дает: {0:#.##}", 10.0/3.0);


Выполнение этого оператора приводит к следующему результату.


>Деление 10/3 дает: 3.33


В данном примере шаблон #.## указывает методу WriteLine() отобразить два десятичных разряда в дробной части числа. Следует, однако, иметь в виду, что метод WriteLine() может отобразить столько цифр слева от десятичной точки, сколько потребуется для правильной интерпретации выводимого значения.

Рассмотрим еще один пример. Оператор


>Console.WriteLine("{0:###,###.##}", 123456.56) ;


дает следующий результат.


>123,456.56


Для вывода денежных сумм, например, рекомендуется использовать спецификатор формата С.


>decimal balance; balance = 12323.09m;

>Console.WriteLine("Текущий баланс равен {0:C}", balance);


Результат выполнения этого фрагмента кода выводится в формате денежных сумм, указываемых в долларах США.


>Текущий баланс равен $12,323.09


Форматом С можно также воспользоваться, чтобы представить в более подходящем виде результат выполнения рассматривавшейся ранее программы расчета цены со скидкой.


>// Использовать спецификатор формата С для вывода

>// результата в местной валюте.

>using System;

>class UseDecimal {

>  static void Main() {

>    decimal price;

>    decimal discount;