Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 153
Текст из файла (страница 153)
Этот вариант дает такой же результат, как н предыдущий. 474 Часть((. Библиотека С» ясг ясг1пд.рогшас("(Оьк)", х)т Сопяо1е.иг1геьапе(ясг)т ягг = Ясггпд.гогшас("(0.012)", х)т Сопяо1е.игьгеЬ1пе(ягг)7 ягг Ясг1пд.рогзаг["(О:С)", 189.99)т Сопяо1е.игьгеЬ»пе(ягг)7 ) ) Аналогично методу Иг10еЬ1пе (), метод Яег1пд.
Еогшае () позволяет встраивать в свой вызов обычный текст вместе со спецификаторами формата, причем в вызове данного метода может быть указано несколько спецификаторов формата и значений. В качестве примера рассмотрим еще одну программу, отображающую текущую сумму и произведение чисел от 1 до 10. // Еше один пример применения метода Гогшаг(] пяьпд Яуясешт /* Отобразить текушую сумму и произведение чисел от 1 до 10.
*/ бог(1=1; 1 <= 10( 1++) ( япш += 1; ргоб * 1; ясг = Ясг1пд.уогшас("Сумма:(0,3ьп) Произведение:(1,8:О)" яиш, ргоб)," Сопяо1е.Игьсепьпе(ясг)> ) ) Ниже приведен результат выполнения этой программы. В данной программе особое внимание обратите иа следующий оператор: с1авя ГогшаГПеюо2 ( ясасьс чогб маап() ( ьпг 1( 1пс япю = 0; 1пг ргоб = 1( ясг1пд ясгт Сумма: 1 Произведение: Сумма: 3 Произведение: Сумма: б Произведение: Сумма: 10 Произведение: Сумма: 15 Произведение." Сумма: 21 Произведениеь Сумма: 28 Произведение: Сумма: 36 Произведение: Сумма: 45 Произведение: Сумма: 55 Произведение: 1 2 б 24 120 720 5040 40320 362880 3628800 Глава 22.
Строки и форнатираванна тт5 зсг = Бсг1лд.рогиас("Сумма:(0,3:П) Проиэведение:(1,8:П)", знм, ргоо)7 В этом операторе содержится вызов метода рогмас () с двумя спецификаторами формата: одним — для суммы (в переменной зим), а другим — для произведения (в переменной ргой). Обратите также внимание на то, что номера аргументов указываются таким же образом, как и в вызове метода нг1се11пе (), и что в вызов метода рогв7ас () включается обычный текст, как, например, строка "сумма: ". Этот текст передается данному методу и становится частью выводимой строки.
Применение метода тов~х~тщ () для форматирования данных Для получения отформатированного строкового представления отдельного значения любого числового типа, которому соответствует встроенная структура, например Тпс32 или РоиЬ1е, можно воспользоваться методом Тозаг1лд () . Этой цели служит приведенная ниже форма метода тозгг1лд () . риьаас зсгглд тозсгапд(зсгалд дпс) В этой форме метод тозсгапд () возвращает строковое представление вызывающего объекта в том формате, который определяет спецификатор г7пс, передаваемый данному методу.
Например, в следующей строке кода формируется строковое представление значения 188.99 в формате денежной единицы с помощью спецификатора формата С: зсгглд зсг = 189.99.тоэсг1лд("С")7 Обратите внимание на то, что спецификатор формата передается методу Тозсггпд () непосредственно. В отличие от встроенных команд форматирования, используемых в вызовах методов Иг1геЫпе () и рогвас (), где для этой цели дополнительно указываются номер аргумента и ширина поля, в вызове метода тозсг1пд () достаточно указать только спецификатор формата. Ниже приведен вариант примера предыдущей программы форматирования, переделанный с целью продемонстрировать применение метода Тозсг1пд () для получения отформатированных строк. Этот вариант дает такой же результат, как и предыдущий.
!/ испольэовать метод тозггглд() для форматирования значений. нз1лд зузсевц а1азз то5сг1лдпемо ( зса11с тоги Ма1л() ( оодЬ1е и = 17688.658497 к)оиЬ1е т2 0.15; 1лс х = 21; згг1лд згг = т.тозгг1лд("г2")7 Солзо1е.иг11еьале(зтг); зсг = т.То51г1лд("Н5"); Солзо1е.иггсеъгле(зсг)7 зсг = т.тозсг1лд("е"); Солзо1е.
Хг1сеъ1ле (зсг); 776 Часть )!, Библиотека СЗ вгг = ч.тозгг1пд("г"): Сопво1е.иг1кеььпе(всг) всг = ч2.тоБггтпд("Р")г Сопво1е.иг1се11пе(всг)Г вгг = х.тоягг1пд("Х")) Сопво1е.иг1се11пе(вкг)г вгг = х.тозсг1пд("О12")> Сопво1е.иггсеьвпе(всг); вгг = 1ЗЭ.ЭЭ.тозсг1пд( С )) Сопво1е.иг11е11пе(вгг)г ) Определение пользовательского формата числовых данных Символы-заполнители специального формата числовых данных Когда пользователь определяет специальный формат, ои задает этот формат в виде примера гиля изображения) того, как должны выглядеть выводимые данные. Для этой цели используются символы, перечисленные в табл.
22.6. Оии служат в качестве заполнителей и рассматриваются далее по очереди. Таблица 22.6. Символы-заполнители специального формата числовых данных Символ-заполнитель Назначение Цифра Десятичная точка Разделитель групп разрядов Процент Используется для дополнения начальными и конечными нулями Выделяет разделы, описывающие формат для полокитепьных, отрица- тельных и нулевых значений Экспоненциальное представление чисел ЕО Е+О Е-О ео е+О е-О Несмотря иа всю полезность предопределенных спецификаторов формата числовмх данных, в С)) предоставляется также возможность определить пользовательский, т.е. свой собственный, формат, используя средство, называемое форматом иэображения.
Своим происхождением термин формат изображения обязан тому обстоятельству, что специальный формат пользователь определяет, задавая пример внешнего вида (т.е. изображение) выводимых данных. Такой подход вкратце упоминался в части 1 этой книги, а здесь ои рассматривается более подробно. Глава 22. Строки и форматирование 777 Символ точки обозначает местоположение десятичной точки. Символ-заполнитель № обозначает цифровую позицию, или разряд числа. Этот символ может указываться слева или справа от десятичной точки или отдельно. Так, если справа от десятичной точки указывается несколько символов №, то опи обозначают количество отображаемых десятичных цифр в дробной части числа.
При необходимости форматируемое числовое значение округляегся. Когда же символы № указываются слева от десятичной точки, то они обозначают количество отображаемых десятичных цифр в целой части числа. При необходимости форматируемое числовое значение дополняется начальными нулями.
Если целая часть числового значения состоит из большего количества цифр, чем количество указываемых символов №, то опа отображается полностью, ио в любом случае целая часть числового значения ие усекается. В отсутствие десятичной точки наличие символа № обусловливает округление соответствующего целого значения. А нулевое значение, которое не существенно, например конечный нуль, ие отображается.
Правда, это обстоятельство несколько усложняет дело, поскольку при указании такого формата, как № . № №, вообще ничего ие отображается, если форматируемое числовое значение равно нулю. Для вывода нулевого значения служит рассматриваемый далее символ-заполнитель О. Символ-заполнитель 0 обусловливает дополнение форматируемого числового значения начальными или конечными нулями, чтобы обеспечить минимально необходимое количество цифр в строковом представлении данного значения. Этот символ может указываться как слева, как и справа от десятичной точки. Например, следующая строка кода: Сопзо1е.мг1Сес1пе("(О:00№№.№00)", 21.3)т выводит такой результат: 0021.300 Значения, состоящие из большего количества цифр, будут полностью отображаться слева от десятичной точки и округленными — справа.
При отображении больших числовых значений отдельные группы цифр могут отделяться друг от друга запятыми, для чего достаточно вставить запятую в шаблон, состоящий из символов №. Например, следующая строка кода: Сопзо1е.нгске11пе("(О:№, №№№.№)", 3421.3); выводит такой результат: 3,421.3. Указывать запятую иа каждой позиции совсем не обязательно. Если указать запятую в шаблоне один раз, то оиа будет автоматически вставляться в форматируемом числовом значении через каждые три цифры слева от десятичной запятой. Например, следующая строка кода: Сопзо1е.кг1Сетапе("(О:№,№№№.№)", 8763421.3)> дает такой результат: 8,763,421.3.
У запятой имеется и другое иазиачеиие. Если запятая вставляется непосредственно перед десятичной точкой, то оиа выполняет роль масштабного коэффициента. Каждая запятая делит форматируемое числовое значение иа 1000. Например, следующая строка кода: Сопзо1е.кг1Се11пе("Значение в тысячах: (О:№,№№№,.№)", 8763421.3); дает такой результат: Значение в тысячах: 8,763.4 778 Часть ((, Библиотека 0» Как показывает приведенный выше результат, числовое значение выводится масштабированным в тысячах.
Помимо символов-заполнителей, пользовательский спецификатор формата может содержать любые другие символы, которые появляются в отформатированной строке без изменения на тех местах, где они указаны в спецификаторе формата. Например, при выполнении следующего фрагмента кода: сопэо1е.игасеьгпе ("кпд топлива: (О:Н. » миль на галлон ]", 21. 3); выводится такой результат: КПП топлива: 21.3 миль на галлон При необходимости в форматируемой строке можно также указывать такие управляющие последовательности, как ЧС или )п. Символы-заполнители Е и е обусловливают отображение числовых значений в экспоненциальном представлении. В этом случае после символа е или е должен быль указан хотя бы один нуль, хотя их может быть и больше. Нули обозначают количество отображаемых десятичных цифр.