Г. Шилдт - С#4.0 Полное руководство (1160795), страница 164
Текст из файла (страница 164)
Правда, это обстоятельство несколько усложняет дело, поскольку при указании такого формата, как № . № №, вообще ничего не отображается, если форматируемое числовое значение равно нулю. Для вывода нулевого значения служит рассматриваемый далее символ-заполнитель О. Таблица 22.6. Сиыволы-заполнители специального формата числовых данных Символ-заполнитель Назначение Цифра Десятичная точка Разделитель групп разрядов Процент Используется для дополнения начальными и конечными нулями Выделяет разделы, описывающие формат для положительных, отрицательных н нулевых значений Экспоненцнальное представление чисел ЕО Б+О Е-О еО е40 е-О Символ-заполнитель О обусловливает дополнение форматируемого числового значения начальными или конечными нулями, чтобы обеспечить минимально необходимое количество цифр в строковом представлении данного значения.
Этот символ может указываться как слева, как и справа от десятичной точки. Например, следующая строка кода: Сопао1е.иггсесгпе("(О:00№№.№00)", 21.3)г выводит такой результат. 0021.300 Значения, состоящие из большего количества цифр, будут полностью отображаться слева от десятичной точки, а округленные — справа. При отображении больших числовых значений отдельные группы цифр могут отделяться друг от друга запятыми, для чего достаточно вставить запятую в шаблон, состоящий из символов №.
Например, следующая строка кода: Сопво1е Иггсесгпе("(О:№,№№№.№)", 3421.3)г выводит такой результат. 3,421.3. Указывать запятую на каждой позиции совсем не обязательно. Если указать запятую в шаблоне один раз, то она будет автоматически вставляться в форматируемом числовом значении через каждые три цифры слева от десятичной запятой. Например, следующая строка кода; 822 Часть 1).
Библиотека Сф Сопво1е.нгьсе61пе (" (О: 4, 44$. Ф) ", 8763421.3); дает такой результат. 8,763,421.3. У запятой имеется и другое назначение. Если запятая вставляется непосредственно перед десятичной точкой, то она выполняет роль масштабного коэффициента. Каждая запятая делит форматируемое числовое значение на 1000. Например, следующая строка кода: Сопво1е.игьсепьпе("Значение в тысячах: (О:4,444,.4)", 8763421.3)( даеттакой результат. Значение в тысячах: 8,763.4 Как показывает приведенный выше результат, числовое значение выводится масштабированным в тысячах. Помимо символов-заполнителей, пользовательский спецификатор формата может содержать любые другие символы, которые появляются в отформатированной строке без изменения на тех местах, где они указаны в спецификаторе формата.
Например, при выполнении следующего фрагмента кода: Сопва1е.иг1ге11пе("КПД топлива: (О:$4.4 миль на галлон )", 21.3)1 выводится такой результат. КПД топлива: 21.3 миль на галлон При необходимости в форматируемой строке можно также указывать такие управляющие последовательности, как (с или 1п. Символы-заполнители Е и е обусловливают отображение числовых значений в экспоненциальном представлении. В этом случае после символа Е или е должен быть указан хотя бы один нуль, хотя их может быть и больше. Нули обозначают количество отображаемых десятичных цифр. Дробная часть числового значения округляется в соответствии с заданным форматом отображения. Если указывается символ Е, то он отображается прописной буквой "Е".
А если указывается символ е, то он отображается строчной буквой "е". Для того чтобы знак порядка отображался всегда, используются формы Е+ или е+. А для отображения знака порядка только при выводе отрицательных значений служат формы Е, е, Е- или е-. Знак; служит разделителем в различных форматах вывода положительных, отрицательных и нулевых значений. Ниже приведена общая форма пользовательского спецификатора формата, в котором используется знак;.
пололительньпг формат; отрицательньвт формат; нулевой формат Рассмотрим следующий пример. сопво1е .Хг1геььпе ("( 0: 4 . 44; (Ф . 44) ( 0 . 00) ", ппи); Если значение переменной ппв положительно, то оно отображается с двумя разрядами после десятичной точки. Если же значение переменной пшп отрицательно, то оно также отображается с двумя разрядами после десятичной точки, но в круглых скобках. А если значение переменной ппв равно нулю, то оно отображается в виде строки О.
00. Когда используются разделители, указывать все части приведенной выше формы пользовательского спецификатора формата совсем не обязательно. Так, если Глава 22. Строки и форматирование 823 требуется вывести только положительные или отрицательные значения, нулевой формат можно опустить. (В данном случае нуль форматируется как положительное значение.) С другой стороны, можно опустить отрицательный формат. И в этом случае цоложительньлй формат и нулевой формат должны разделяться точкой с запятой. А в итоге положительный формат будет использоватьсл для форматирования не только положительных, но и отрицательных значений. В приведенном ниже примере программы демонстрируетск лишь несколько специальных форматов, которые могут быть определены пользователем.
О Пример применения специальных Форматов. ияьпо Буягевг с1аяя РгссигеуошпаСОево ( япас1с ноьб Маьп() ( боиб1е пшя = 64354.2345; Сопяо1е.Хгьсеььпе("Формат по умолчанию: " + пшп) О Отобразить числовое значение с 2 разрядами после десятичной точки. Сопяо1е.Хгггеььпе("Значение с 2 десятичными разрядами: "(О:$.$4)", п|лп); У( Отобразить числовое значение с 2 разрядами после // десятичной точки и запятыми перед ней. Сопяо1е.Хгггеььпе("Добавить запятые: (О:4,НФ.Н )", пшп)г !! Отобразить числовое значение в зкспоненциальном представлении. Сопяо1е.йггсе)лпе("Использовать зкспоненциальное представление: "(О:4.Н4е+ОО)", пшп); О Отобразить числовое значение, масштабированное в тысячах. Сопяо1е.йгп.ве11пе("Значение в тысячах: " + "(О:40,)", пив); /* Отобразить по-разному положительные, отрицательные и нулевые значения. *у Сопяо1е.йг1се11пе("Отобразить по-разному положительные," + "отрицательные и нулевые значения."); Сопяо1е .Хгг Ке1 1пе ("( 0: $ . 4; (4 .
44) г О . 00) ", п1лп) ' пив = -пшп; Сопяо1е.йгьгеьтпе ("(О: 4. Н; (4. Н); О. 00) ", пив); пив = 0.0; Сопяо1е.йгьсе11пе (" (О: 4. Нг (4. 44); О. 00) ", пив); Отобразить числовое значение в процентах. пив = 0.174 Сопяо1е.йгьпекьпе("Отобразить в процентах: (О:4$)", пив); ) ) Ниже приведен результат выполнения этой программы. Формат по умолчанию: 64354.2345 Значение с 2 десятичньппи разрядами: 64354.23 Добавить запятые: 64,354.23 824 Часть! Е Библиотека С№ Испольэовать экспоиеициальное представление: 6.435еь04 значение в тысячах: 64 Отобразить по-разноыу положительные, отрицательные и нулевые значения.
64354.2 (64354.23) 0.00 Отобразить в процентах: 17Ь Форматирование даты и времени Помимо числовых значений, форматированию нередко подлежит и другой тип данных: Пагет1ые. Это структура, представляющая дату и время. Значения даты и времени могут отображаться самыми разными способами.
Ниже приведены лишь некоторые примеры их отображения. 06/05/2005 Ггьбау, Юапцагу 1, 2010 12:59:00 12:59:00 РН Кроме того, дата и время могут быть по-разному представлены в отдельных странах. Для этой цели в среде .НЕТ Ргашетчог)4 предусмотрена обширная подсистема форматирования значений даты и времени. Форматирование даты и времени осуществляется с помощью спецификаторов формата. Спецификаторы формата даты и времени сведены в табл.
22.7. Конкретное представление даты и времени может отличаться в силу региональных и языковых особенностей и поэтому зависит от настройки параметров культурной среды. Таблица 22.7. Спецификаторы формата даты и времени Спецификатор Формат Дата в длинной форме Дата в краткой форме Дата и время в длинной форме Дата и время а краткой форме Дата — в краткой форме, время — в длинной Дата и время — в краткой форме Месяц и день То же, что и м Формат даты и времени, включая часовой пояс.
Строка, составленная в формате О, может быть преобразована обратно в эквивалентную форму вывода даты и времени. Это так называемый "круговой" формат То же, что и о Дата и время в стандартной форме по Гринвичу То же, что и н Сортируемый формат представления даты и времени Время в длинной форме Время в краткой форме Глава 22. Строки и Форматирование 828 Окончание псабл. 22.7 Специфи катар формат Длинная форма универсального представления даты и времени; время ото- .бражается как универсальное синхронизированное время (0ТС) Краткая форма универсального представления даты и времени Месяц и год Тоже, что и у и У Отформатировать дату и время, используя стандартные форматы. овгпо зузсещ; с1авв Т1щехпооасеуогщаооещо ( зоагго тога Магп() ( Оаоетгще с)Г = Оапетгще.нон; с'/ получить текущее время Сопво1е.игггеЫпе("Формат с)с (О:с))", с)С)г Сопзо1е.ИггоеЫпе("Формат О: (О:О)", СС)) Сопво1е.иггсеЫпе("Формат Гс "(О:Г)", с)Г)Г Сопзо1е.иггсеЫпе (" Формат' Т: ( 0:Т) ", с(Г) г Сопзо1е.Иггсе1.гпе("Формат Гс (Оса)", с(Г); Сопво1е.иггге1,гпе("Формат Г: (О:Г)", с)Г); Сопво1е.иггсе1,1пе("Формат еи (Оса)", с(Г); Сопво1е.игасе1,гпе("Формат О: (О:6)", с)Г); сопво1е.хгьгеыпе("Формат щ: (О:щ)", дю; сопво1е.хгсве1 1пе( Формат м: (О:м), с(г) г Сопво1е.иггсеЫпе("Формат о: (Осо)", с(Г)с Сопзо1е.Хг).сеЫпе("Формат О: (О:О)", с)Г); Сопзо1е.игасеЫпе("Формат г: (Осг)", с(г)с Сопзо1е.иг1се1гпе("Формат и: (Оса)", с)Г)с Сопзо1е.иг1сеЫпе("Формат в: (О:з)", с)г)г сопво1е.хг1геыпе("Формат п: (О:п)", ог)с Сопзо1е.иг)сеЫпе("Формат О: (О:О)", с(Г)с Сопво1е.иггсеЫпе (" Формат у: ( 0: у)', со) ' Сопзо1е.иг1ое)впе("т Гоппапс (Осу)", с(Г); ) ) Зта программа дает следующий результат, который, впрочем, зависит от настроек языковых и региональных параметров локализации базового программного обеспечения.