Читайте также:
|
|
Прежде чем продолжить рассмотрение типов данных и операторов, сделаем небольшое отступление. До этого момента при выводе списка данных мы разделяли части списка с помощью знака плюс, как показано ниже:
Console.WriteLine("Было заказано " + 2 + " книги по $" + 3 +
"за единицу товара.");
Это удобно, но такой вывод числовой информации не позволяет контролировать способ появления данной информации на экране. Например, нельзя контролировать выводимое число десятичных разрядов для значений с плавающей точкой. Рассмотрим следующий оператор:
Console.WriteLine("10/3 = " + 10.0/3.0);
После его выполнения на экран будет выведена следующая строка:
10/3 = 3.33333333333333
Для некоторых целей вывод такого большого числа десятичных разрядов оправдан, но в других случаях он может быть неприемлем. Например, в финансовых вычислениях обычно требуется вывод только двух десятичных разрядов. Для форматирования числовых данных необходимо использовать перегруженный метод WriteLine()(перегрузка методов будет рассматриваться в главе 6), в один из параметров которого можно внедрить форматирующую информацию. Синтаксис этого метода выглядит так:
WriteLine("форматирующая строка", arg0, arg1,..., argN);
В этой версии метода WriteLine()аргументы разделены запятыми, а не знаками плюс. Форматирующая строка состоит из стандартных выводимых без изменения символов и спецификаторов формата. Синтаксис спецификаторов формата обычно выглядит так:
{argnum, width: fmt}
Здесь элемент argnum указывает номер аргумента (начиная с ноля), который должен быть выведен на экран в данном месте строки. Элемент width определяет минимальную ширину поля, предоставляемого данному аргументу, а элемент fmt специфицирует используемый формат вывода.
Когда при выполнении в форматирующей строке встречается спецификатор формата, программа заменяет его соответствующим аргументом, который и выводится на экран. Следовательно, позиция спецификатора формата в форматирующей строке указывает место, где на экране будут выведены соответствующие данные. Элементы width и fmt являются не обязательными. Следовательно, в своей простейшей форме спецификатор формата указывает аргумент, необходимый для вывода на экран. Например, спецификатор {0} указывает на аргумент arg0, спецификатор {1} указывает на аргумент arg1 и так далее.
Теперь рассмотрим простой пример. Оператор
Console.WriteLine("В феврале {0} или {1} дней.", 28, 29);
выведет на экран следующую строку:
В феврале 28 или 29 дней.
Как видите, спецификатор {0} заменяется значением 28, а спецификатор {1} - значением 29. Обратите внимание, что аргументы метода WriteLine() разделяются запятыми, а не знаками плюс.
Следующий пример демонстрирует усовершенствованную версию предыдущего оператора, в которой специфицирована минимальная ширина поля:
Console.WriteLine("В феврале {0,10} или {1,5} дней.", 28, 29);
Результат выполнения данного оператора следующий:
В феврале 28 или 29 дней.
Если выводимое число меньше заданной ширины поля, то неиспользованные части поля заполняются пробелами. Помните, что ширина поля - это минимальное количество позиций, выделенных для выводимого значения. Если для вывода числа потребуется большее количество позиций, они будут выделены автоматически.
В предыдущих примерах к самим значениям форматирование не применялось, но безусловно, используемые спецификаторы формата должны контролировать отображение данных. Чаще всего форматируются значения с плавающей точкой и значения, имеющие тип decimal. Одним из простейших способов спецификации формата является написание шаблона, который будет использован методом WriteLine() при форматировании выводимых значений. Шаблон создается следующим образом: в спецификаторе формата указывается номер аргумента, затем после двоеточия при помощи символа # указываются позиции выводимых цифр. Так, после выполнения оператора
Console.WriteLine("10/3 = {0:#.##}", 10.0/3.0);
программа выведет отформатированное значение, являющееся результатом деления 10.0 на 3.0,
10/3 = 3.33
В этом примере шаблон создается последовательностью символов #.##, с помощью которых методу WriteLine() сообщается о необходимости вывода двух десятичных разрядов. Если программой выводится число, у которого целая часть содержит более одного знака, то во избежание потери данных метод WriteLine() будет выводить более одной цифры слева от запятой.
В случае необходимости вывода значения в долларах и центах используйте спецификатор формата C. Например,
decimal balance
balance = 12323.09m;
Concole.WriteLine("Текущий баланс равен: {0:C}", balance);
В результате будет выведено следующее сообщение:
Текущий баланс равен: $12,323.09
10Логические (булевские) выражения в C#. Простые и сложные выражения. Логические операнды и логические операторы. Порядок выполнения операций.
Дата добавления: 2015-01-29; просмотров: 29 | Поможем написать вашу работу | Нарушение авторских прав |