Сумма: 36 Произведение: 40320
Сумма: 45 Произведение: 362880
Сумма: 55 Произведение: 3628800
Обратите особое внимание в данной программе на следующий оператор.
str = String.Format("Сумма:{0,3:D} Произведение:{1,8:D}", sum, prod);
В этом операторе содержится вызов метода Format() с двумя спецификаторами формата: одним — для суммы (в переменной sum), а другим — для произведения (в переменной prod). Обратите также внимание на то, что номера аргументов указываются таким же образом, как и в вызове метода WriteLine(), и что в вызов метода Format() включается обычный текст, как, например, строка "Сумма : ". Этот текст передается данному методу и становится частью выводимой строки.
Применение метода ToString() для форматирования данных
Для получения отформатированного строкового представления отдельного значения любого числового типа, которому соответствует встроенная структура, например Int32 или Double, можно воспользоваться методом ToString(). Этой цели служит приведенная ниже форма метода ToString().
public string ToString("форматирующая строка")
В этой форме метод ToString() возвращает строковое представление вызывающего объекта в том формате, который определяет спецификатор "форматирующая строка", передаваемый данному методу. Например, в следующей строке кода формируется строковое представление значения 188.99 в формате денежной единицы с помощью спецификатора формата С.
string str = 189.99.ToString("С");
|
|
Обратите внимание на то, что спецификатор формата передается методу ToString() непосредственно. В отличие от встроенных команд форматирования, используемых в вызовах методов WriteLine() и Format(), где для этой цели дополнительно указываются номер аргумента и ширина поля, в вызове метода ToString() достаточно указать только спецификатор формата.
Ниже приведен вариант примера предыдущей программы форматирования, измененный с целью продемонстрировать применение метода ToString() для получения отформатированных строк. Этот вариант дает такой же результат, как и предыдущий.
// Использовать метод ToString() для форматирования значений.
using System;
class ToStringDemo {
static void Main() {
double v = 17688.65849;
double v2 = 0.15;
int x = 21;
string str = v.ToString("F2");
Console.WriteLine(str);
str = v.ToString("N5");
Console.WriteLine(str);
str = v.ToString("e");
Console.WriteLine(str);
str = v.ToString("r");
Console.WriteLine(str);
str = v2.ToString("p");
Console.WriteLine(str);
str = x.ToString("X");
Console.WriteLine(str);
str = x.ToString("D12");
Console.WriteLine(str);
str = 189.99.ToString("C");
Console.WriteLine(str);
}
}
Определение пользовательского формата числовых данных
Несмотря на всю полезность предопределенных спецификаторов формата числовых данных, в C# предоставляется также возможность определить пользовательский, т.е. свой собственный, формат, используя средство, называемое форматом изображения . Своим происхождением термин формат изображения обязан тому обстоятельству, что специальный формат пользователь определяет, задавая пример внешнего вида (т.е. изображение) выводимых данных. Такой подход вкратце упоминался в части I этой книги, а здесь он рассматривается более подробно.
|
|
Символы-заполнители специального формата числовых данных
Когда пользователь определяет специальный формат, он задает этот формат в виде примера (или изображения) того, как должны выглядеть выводимые данные. Для этой цели используются символы, перечисленные в табл. 22.6. Они служат в качестве заполнителей и рассматриваются далее по очереди.
Символ точки обозначает местоположение десятичной точки.
Символ-заполнитель # обозначает цифровую позицию, или разряд числа. Этот символ может указываться слева или справа от десятичной точки либо отдельно. Так, если справа от десятичной точки указывается несколько символов #, то они обозначают количество отображаемых десятичных цифр в дробной части числа. При необходимости форматируемое числовое значение округляется. Когда же символы # указываются слева от десятичной точки, то они обозначают количество отображаемых десятичных цифр в целой части числа. При необходимости форматируемое числовое значение дополняется начальными нулями. Если целая часть числового значения состоит из большего количества цифр, чем количество указываемых символов #, то она отображается полностью, но в любом случае целая часть числового значения не усекается. В отсутствие десятичной точки наличие символа # обусловливает округление соответствующего целого значения. А нулевое значение, которое не существенно, например конечный нуль, не отображается. Правда, это обстоятельство несколько усложняет дело, поскольку при указании такого формата, как # . # #, вообще ничего не отображается, если форматируемое числовое значение равно нулю. Для вывода нулевого значения служит рассматриваемый далее символ-заполнитель 0.
|
|
Таблица 22.6. Символы-заполнители специального формата числовых данных
Символ-заполнитель
Назначение
#
Цифра
.
Десятичная точка
,
Разделитель групп разрядов
%
Процент
0
Используется для дополнения начальными и конечными нулями
|
|
;
Выделяет разделы, описывающие формат для положительных, отрицательных и нулевых значений
Е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);
выводится такой результат.
Дата добавления: 2019-02-12; просмотров: 270; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!