KnigaRead.com/
KnigaRead.com » Разная литература » Прочее » Герберт Шилдт - C# 4.0 полное руководство - 2011

Герберт Шилдт - C# 4.0 полное руководство - 2011

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн "Герберт Шилдт - C# 4.0 полное руководство - 2011". Жанр: Прочее издательство неизвестно, год неизвестен.
Перейти на страницу:

Символы-заполнители специального формата числовых данных

I

Когда пользователь определяет специальный формат, он задает этот формат в виде примера (или изображения) того, как должны выглядеть выводимые данные. Для этой цели используются символы, перечисленные в табл. 22.6. Они служат в качестве заполнителей и рассматриваются далее по очереди.

Символ точки обозначает местоположение десятичной точки.

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

Таблица 22.6. Символы-заполнители специального формата числовых данных

Символ-заполнитель

Назначение

#

Цифра

Десятичная точка

,

Разделитель групп разрядов

%

Процент

0

Используется для дополнения начальными и конечными нулями

;

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

Е0 Е+0 Е-0 еО е+0 е-0

Экспоненциальное представление чисел

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

Console.WriteLine("{0:00##.#00}", 21.3); выводит такой результат.

0021.300

Значения, состоящие из большего количества цифр, будут полностью отображаться слева от десятичной точки, а округленные — справа.

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

Console.WriteLine("{0:#,###.#}", 3421.3);

выводит такой результат.

3,421.3.

Указывать запятую на каждой позиции совсем не обязательно. Если указать запятую в шаблоне один раз, то она будет автоматически вставляться в форматируемом числовом значении через каждые три цифры слева от десятичной запятой. Например, следующая строка кода:

Console.WriteLine ("{0:#,###.#}", 8763421.3); дает такой результат.

8,763,421.3.

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

Console.WriteLine("Значение в тысячах: {0:#,###,.#}", 8763421.3); дает такой результат.

Значение в тысячах: 8,763.4

Как показывает приведенный выше результат, числовое значение выводится масштабированным в тысячах.

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

Console.WriteLine("КПД топлива: {0:##.# миль на галлон }", 21.3); выводится такой результат.

КПД топлива: 21.3 миль на галлон

При необходимости в форматируемой строке можно также указывать такие управляющие последовательности, как t или п.

Символы-заполнители Е и е обусловливают отображение числовых значений в экспоненциальном представлении. В этом случае после символа Е или е должен быть указан хотя бы один нуль, хотя их может быть и больше. Нули обозначают количество отображаемых десятичных цифр. Дробная часть числового значения округляется в соответствии с заданным форматом отображения. Если указывается символ Е, то он отображается прописной буквой "Е". А если указывается символ е, то он отображается строчной буквой "е". Для того чтобы знак порядка отображался всегда, используются формы Е+ или е+. А для отображения знака порядка только при выводе отрицательных значений служат формы Е, е, Е- или е-.

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

положительный_формат; отрицательный_формат; нулевой_формат

Рассмотрим следующий пример.

Console.WriteLine("{0:#.##; (#.##);0.00}", num);

Если значение переменной num положительно, то оно отображается с двумя разрядами после десятичной точки. Если же значение переменной num отрицательно, то оно также отображается с двумя разрядами после десятичной точки, но в круглых скобках. А если значение переменной num равно нулю, то оно отображается в виде строки 0.00. Когда используются разделители, указывать все части приведенной выше фррмы пользовательского спецификатора формата совсем не обязательно. Так, если требуется вывести только положительные или отрицательные значения, нулевой_ формат можно опустить. (В данном случае нуль форматируется как положительное значение.) С другой стороны, можно опустить отрицательный_формат. И в этом случае положительный_формат и нулевой_формат должны разделяться точкой с запятой. А в итоге положительный_формат будет использоваться для форматирования не только положительных, но и отрицательных значений.

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

// Пример применения специальных форматов, using System;

class PictureFormatDemo { static void Main() {

double num = 64354.2345;

Console.WriteLine("Формат по умолчанию: " + num);

// Отобразить числовое значение с 2 разрядами после десятичной точки. Console.WriteLine("Значение с 2 десятичными разрядами: " +

"{0:#.##}", num);

// Отобразить числовое значение с 2 разрядами после // десятичной точки и запятыми перед ней.

Console.WriteLine("Добавить запятые: {0:#,###.##}", num);

// Отобразить числовое значение в экспоненциальном представлении.

Console.WriteLine("Использовать экспоненциальное представление: " +

"{0:#.###е+00}", num);

// Отобразить числовое значение, масштабированное в тысячах.

Console.WriteLine("Значение в тысячах: " + "{0:#0,}", num) ;

/* Отобразить по-разному положительные, отрицательные и нулевые значения. */

Console.WriteLine("Отобразить по-разному положительные," +

"отрицательные и нулевые значения.");

Console.WriteLine("{0:#.#; (#.##);0.00}", num); num = -num;

Console.WriteLine("{0:#.##;(#.##);0.00}", num); num = 0.0;

Console.WriteLine ("{0:#.##; (#.##);0.00} ", num) ;

// Отобразить числовое значение в процентах, num = 0.17;

Console.WriteLine("Отобразить в процентах: {0:#%}", num);

}

}

Ниже приведен результат выполнения этой программы.

Формат по умолчанию: 64354.2345

Значение с 2 десятичными разрядами: 64354.23

Добавить запятые: 64,354.23

Использовать экспоненциальное представление: 6.435е+04 Значение в тысячах: 64

Отобразить по-разному положительные, отрицательные и нулевые значения.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*