C# 4.0: полное руководство | страница 45



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

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


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

>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


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