Чтение онлайн

на главную - закладки

Жанры

Полное руководство. С# 4.0
Шрифт:

Если во время выполнения программы в форматирующей строке встречается команда форматирования, то вместо нее подставляется и затем отображается соот ветствующий аргумент, определяемый параметром argnum. Следовательно, от поло жения спецификатора формата в форматирующей строке зависит, где именно будут отображаться соответствующие данные. А номер аргумента определяет конкретный форматируемый аргумент.

Если в команде форматирования указывается параметр fmt, то данные отображают ся в указываемом формате. В противном случае используется формат, выбираемый по умолчанию. Если же в команде форматирования указывается параметр width, то вы водимые данные дополняются пробелами для достижения минимально необходимой ширины поля. При положительном значении параметра width выводимые данные вы равниваются

по правому краю, а при отрицательном значении — по левому краю.

Оставшаяся часть данной главы посвящена вопросам форматирования и отдель ным спецификаторам формата. Спецификаторы формата числовых данных

Для числовых данных определено несколько спецификаторов формата, сведенных в табл. 22.4. Каждый спецификатор формата может включать в себя дополнительный, но необязательный спецификатор точности. Так, если числовое значение требуется указать в формате с фиксированной точкой и двумя десятичными разрядами в дроб ной части, то для этой цели служит спецификатор F2.

Таблица 22.4. Спецификаторы формата числовых данных Спецификатор Формат Назначение спецификатора точности С Денежная единица Задает количество десятичных разрядов с То же, что и С D Целочисленный (используется только с целыми числами) Задает минимальное количество цифр. При необходимости результат дополняется начальными нулями d То же, что и D Е Экспоненциальное представление чисел (в обозначении используется прописная буква Е) Задает количество десятичных разрядов. По умолчанию используется шесть разрядов е Экспоненциальное представление чисел (в обозначении используется строчная буква е) Задает количество десятичных разрядов. По умолчанию используется шесть разрядов F Представление чисел с фиксированной точкой Задает количество десятичных разрядов f То же, что и F G Используется более короткий из двух форматов: Е или F См. спецификаторы Е и F g Используется более короткий из двух форматов: е или f См. спецификаторы е и f N Представление чисел с фиксированной точкой (и запятой в качестве разделителя групп разрядов) Задает количество десятичных разрядов n То же, что и N Р Проценты Задает количество десятичных разрядов Р То же, что и Р R или r Числовое значение, которое преобразуется с помощью метода Parse в эквивалентную внутреннюю форму. (Это так называемый "круговой" формат) Не используется X Шестнадцатеричный (в обозначении используются прописные буквы A-F) Задает минимальное количество цифр. При необходимости результат дополняется начальными нулями X Шестнадцатеричный (в обозначении используются строчные буквы A-F) Задает минимальное количество цифр. При необходимости результат дополняется начальными нулями

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

В приведенной ниже программе демонстрируется применение нескольких специ фикаторов формата числовых данных. // Продемонстрировать применение различных // спецификаторов формата числовых данных. using System; class FormatDemo { static void Main { double v = 17688.65849; double v2 = 0.15; int x = 21; Console.WriteLine("{0:F2}", v); Console.WriteLine("{0:N5}", v); Console.WriteLine("{0:e}", v); Console.WriteLine("{0:r}", v); Console.WriteLine("{0:p}", v2); Console.WriteLine("{0:X}", x); Console.WriteLine("{0:D12}", x); Console.WriteLine("{0:C}", 189.99); } }

Эта программа дает следующий результат. 17688.66 17.688.65849 1.768866е+004 17688.65849 15.00 % 15 000000000021 $189.99

Обратите внимание на действие спецификатора точности в нескольких форматах. Представление о номерах аргументов

Следует иметь в виду, что аргумент, связанный со спецификатором формата, опре деляется номером

аргумента, а не его позицией в списке аргументов. Это означает, что один и тот же аргумент может указываться неоднократно в одном вызове метода WriteLine. Эта также означает, что аргументы могут отображаться в той последо вательности, в какой они указываются в списке аргументов. В качестве примера рас смотрим следующую программу. using System; class FormatDemo2 { static void Main { // Форматировать один и тот же аргумент тремя разными способами. Console.WriteLine("{0:F2} {0:F3} {0:е}", 10.12345); // Отобразить аргументы не по порядку. Console.WriteLine("{2:d} {0:d} {l:d}", 1, 2, 3); } }

Ниже приведен результат выполнения этой программы. 10.12 10.123 1.012345е+001 3 1 2

В первом операторе вызова метода WriteLine один и тот же аргумент 10.12345 форматируется тремя разными способами. Это вполне допустимо, поскольку каждый спецификатор формата в этом вызове обозначает первый и единственный аргумент. А во втором вызове метода WriteLine три аргумента отображаются не по порядку. Не следует забывать, что каких-то особых правил, предписывающих обозначать аргу менты в спецификаторах формата в определенной последовательности, не существует. Любой спецификатор формата может обозначать какой угодно аргумент. Применение методов String.Format и ToString для форматирования данных

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

Вообще говоря, отформатированное строковое представление отдельного зна чения может быть получено двумя способами. Один из них состоит в применении метода String.Format, а другой — в передаче спецификатора формата методу ToString, относящемуся к одному из встроенных в С# числовых типов данных. Оба способа рассматриваются далее по порядку. Применение метода String.Format для форматирования значений

Для получения отформатированного значения достаточно вызвать метод Format, определенный в классе String, в соответствующей его форме. Все формы этого метода перечислены в табл. 22.5. Метод Format аналогичен методу WriteLine, за ис ключением того, что он возвращает отформатированную строку, а не выводит ее на консоль.

Таблица 22.5. Формы метода Format Метод Описание public static string Format(string format, object arg0) Форматирует объект arg0 в соответствии с первой командой форматирования, которая содержится в строке format. Возвращает копию строки format, в которой команда форматирования заменена отформатированными данными public static string Format(string format, object arg0, object arg1) Форматирует объект arg0 в соответствии с первой командой форматирования, содержащейся в строке format, а объект arg1 — в соответствии со второй командой. Возвращает копию строки format, в которой команды форматирования заменены отформатированными данными public static string Format(string format, object arg0, object arg1, object arg2) Форматирует объекты arg0, arg1 и arg2 по соответствующим командам форматирования, содержащимся в строке format. Возвращает копию строки format, в которой команды форматирования заменены отформатированными данными public static string Format(string format, params object[] args) Форматирует значения, передаваемые в массиве args, в соответствии с командами форматирования, содержащимися в строке format. Возвращает копию строки format, в которой команды форматирования заменены отформатированными данными public static string Format(IFormatProvider provider, string format, params object[] args) Форматирует значения, передаваемые в массиве args, в соответствии с командами форматирования, содержащимися в строке format, используя поставщик формата provider. Возвращает копию строки format, в которой команды форматирования заменены отформатированными данными

Поделиться:
Популярные книги

Начальник милиции. Книга 5

Дамиров Рафаэль
5. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 5

Папина дочка

Рам Янка
4. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Папина дочка

Возвышение Меркурия. Книга 8

Кронос Александр
8. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 8

АллатРа

Новых Анастасия
Научно-образовательная:
психология
история
философия
обществознание
физика
6.25
рейтинг книги
АллатРа

Золушка вне правил

Шах Ольга
Любовные романы:
любовно-фантастические романы
6.83
рейтинг книги
Золушка вне правил

Возвышение Меркурия. Книга 5

Кронос Александр
5. Меркурий
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 5

На Ларэде

Кронос Александр
3. Лэрн
Фантастика:
фэнтези
героическая фантастика
стимпанк
5.00
рейтинг книги
На Ларэде

Барон Дубов 6

Карелин Сергей Витальевич
6. Его Дубейшество
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Барон Дубов 6

Ротмистр Гордеев

Дашко Дмитрий Николаевич
1. Ротмистр Гордеев
Фантастика:
фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Ротмистр Гордеев

Кодекс Крови. Книга VI

Борзых М.
6. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга VI

Лучше подавать холодным

Аберкромби Джо
4. Земной круг. Первый Закон
Фантастика:
фэнтези
8.45
рейтинг книги
Лучше подавать холодным

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

Крестоносец

Ланцов Михаил Алексеевич
7. Помещик
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Крестоносец

Сердце Дракона. Том 12

Клеванский Кирилл Сергеевич
12. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.29
рейтинг книги
Сердце Дракона. Том 12