Для преобразования любых типов данных к их строковому представлению с целью их вывода в понятном пользователю виде часто приходится использовать форматированный вывод.
Метод ToString()
С целью форматированного вывода числа часто используется метод
ToString() класса
Object. Поскольку в языке C# любой класс является наследником класса
Object, то все классы наследуют метод
ToString(), и большинство из них переопределяют его.
Если метод
ToString() вызывается без параметров, то используется формат вывода по умолчанию.
Тип данных | Класс | Точность по умолчанию |
byte sbyte | Byte SByte |
до 3 знакомест |
short ushort | Int16 UInt16 |
до 5 знакомест |
int uint | Int32 UInt32 |
до 10 знакомест |
long | Int64 |
до 19 знакомест |
ulong | UInt64 |
до 20 знакомест |
float | Single |
до 7 значащих цифр |
double | Double |
до 15 значащих цифр |
decimal | Decimal |
до 29 значащих цифр |
Для форматов с плавающей точной знак экспоненты
E отображается
- если число содержит больше цифр, чем предоставлено для его отображения,
- если порядок числа меньше чем 10-4.
Если пользователю требуется вывести число в другом формате, то для этого можно создать строку формата числа и передать ее методу
ToString(string) в качестве аргумента. При форматировании строки для вывода числа используются следующие специальные символы, основные из которых представлены в таблице.
Символ | Назначение | Комментарий |
0 | Заменитель нуля |
Заменяет ноль соответствующей цифрой, если такая имеется. В противном случае в результирующей строке будет стоять ноль. |
# | Заменитель цифры |
Заменяет знак # соответствующей цифрой, если такая имеется. В противном случае в результирующей строке не будет цифры.
|
, | Разделитель групп Масштаб числа |
В качестве разделителя групп вставляет локальный разделитель между группами по 3 символа. Чтобы в строках явно отделять тысячи, к обычному шаблону слева добавляется "0,".
В качестве масштабирования разделяет число на 1000 столько раз, сколько встречается символ ",". |
. | Точка |
Разделитель целой и дробной части. Допускается явно указывать формат целой и дробной части числа. |
; | Разделитель секций |
Определяет секции с раздельными строками формата для положительных чисел, отрицательных чисел и нуля. |
E e | Экспоненциальная нотация |
Определяет форматирование числа в экспоненциальной форме. |
F f | Точность |
Определяет количество разрядов, которое требуется вывести после разделителя целой и дробной части, которое указывается непосредственно после символа "F". |
G g | По умолчанию |
Использует формат по умолчанию для вывода числа. |
D d | Количество десятичных цифр |
Определяет количество цифр целого числа, которое требуется вывести, которое указывается непосредственно после символа "D". Если число отрицательное, то знак "-" в это количество цифр не входит. (Символ определен только для целых чисел). |
N n | Число |
Использует для отображения числа разделитель тысяч и дробную часть. Отображаемой количество символов дробной части указывается непосредственно после символа "N" (по умолчанию выводится 2 символа дробной части). |
P p | Процент |
Преобразует выводимое число в проценты, умножая его на 100. После числа выводится символ "%". |
X x | Шестнадцатеричный формат |
Выводит число в шестнадцатеричном формате. (Символ определен только для целых чисел). |
Пример форматирования целого числа.
Пример форматированного вывода вещественного числа.
Метод String.Format()
Более широкими возможностями форматирования данных для представления их в виде строки обладает статический метод
Format() класса
String.
Этот метод позволяет создавать строку, состоящую как из последовательности символов, так и из данных в указанном формате, которые подставляются на отведенные места.
Общий вид вызова этого метода имеет следующий вид:
String.Format(String format, Object arg0, Object arg1, ...);
Метод возвращает полученную в результате форматирования строку.
Количество аргументов типа
Object, указанных при выводе метода, определяется количеством местодержателей, в которых значения этих объектов необходимо вывести.
Каждый местодержатель представляет собой размещенный в фигурных скобках номер объекта, который необходимо вывести на его место. Нумерация объектов начинается с 0:
{0}, {1} и т.д.
Общий вид строки формата может быть представлен в виде:
{aa,bb:cc.dd},
где
- aa - номер объекта;
- bb - количество знакомест, отводимое для вывода числа (положительное число соответствует выравниванию числа по правому краю, отрицательное число соответствует выравниванию числа по левому краю);
- cc - форматирование целой части числа;
- dd - форматирование дробной части числа.
Для форматирования целой и дробной части используются те же спецсимволы, что и для форматированного метода с помощью метода
ToString().
Метод Convert.ToString()
Статический класс
Convert предназначен для преобразования одного базового типа данных к другому. Рассмотрим преобразование числовых типов данных к строковому представлению с помощью этого класса.
Метод | Описание |
ToString(Byte)
ToString(SByte)
ToString(Int16)
ToString(UInt16)
ToString(Int32)
ToString(UInt32)
ToString(Int64)
ToString(UInt64)
ToString(Single)
ToString(Double)
|
Преобразует заданное число в эквивалентное строковое представление в формате по умолчанию. |
ToString(Byte, IFormatProvider)
ToString(SByte, IFormatProvider)
ToString(Int16, IFormatProvider)
ToString(UInt16, IFormatProvider)
ToString(Int32, IFormatProvider)
ToString(UInt32, IFormatProvider)
ToString(Int64, IFormatProvider)
ToString(UInt64, IFormatProvider)
ToString(Single, IFormatProvider)
ToString(Double, IFormatProvider)
|
Преобразует заданное число в эквивалентное строковое представление, учитывая формат, реализуемый интерфейсом IFormatProvider. В качестве второго аргумента могут выступать объекты классов:
- NumberFormatInfo - предоставляет сведения, используемые для форматирования чисел, таких как валюта, разделитель разрядов, и десятичный разделитель для определенного языка и региональных параметров;
- DateTimeFormatInfo - предоставляет сведения, используемые для форматирования даты и времени, например символы разделителя даты и времени для языка и региональных параметров или порядка и формат года, месяца и дневных компонентов даты;
- CultureInfo - представляет определенный язык и региональные параметры.
|
ToString(Byte, Int32)
ToString(Int16, Int32)
ToString(Int32, Int32)
ToString(Int64, Int32)
|
Преобразует заданное целое число в эквивалентное строковое представление, в системе счисления, указанной в качестве второго аргумента. Поддерживаются системы счисления с основаниями:
|
Рассмотрим пример вывода числа в различных системах счисления.
Аналогичным образом можно ввести число, записанное в заданной системе счисления. С этой целью можно воспользоваться одним из следующих методов класса
Convert. Все эти методы возвращают целое число в указанном формате.
- ToByte(String, Int32);
- ToInt16(String, Int32);
- ToInt32(String, Int32);
- ToInt64(String, Int32);
В указанных методах в качестве первого аргумента вводится текстовая строка, а в качестве второго аргумента - основание системы счисления преобразуемого числа, которое может принимать значения 2, 8, 10 или 16.
Однако указанные методы не являются защищенными, и при попытке преобразования в число строки, содержащей не только цифры числа в указанной системе счисления, возникает исключение.
Таким образом, в статье приведены основные способы форматированного вывода числовых данных встроенных типов. Наиболее универсальным инструментом для этого является метод
String.Format(), который, кстати, используется по умолчанию функциями консольного вывода
Console.Write() или
Console.WriteLine():
Автор: Вставская Елена Владимировна
Написать комментарий: