Российский Государственный Технологический Университет им. К.Э. Циолковского
Опубликован: 02.03.2007 | Доступ: свободный | Студентов: 5636 / 790 | Оценка: 3.96 / 3.45 | Длительность: 27:04:00
ISBN: 978-5-9556-0086-4
Лекция 11:

Ввод/вывод

Нестандартное (custom) форматирование значений

В маркерах выражений вызова функций вывода могут также размещаться спецификаторы (custom format strings), реализующие возможности расширенного форматирования.

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

Следует иметь в виду, что на выходные строки, создаваемые с помощью некоторых из этих знаков, влияют настройки компонента "Язык и региональные стандарты" панели управления объекта NumberFormatInfo, связанного с текущим потоком. Результаты будут различными на компьютерах с разными параметрами культуры.

Знак формата Имя Описание
0 Знак – заместитель нуля Цифра, расположенная в соответствующей позиции форматируемого значения, будет скопирована в выходную строку, если в этой позиции в строке формата присутствует " 0 ". Позиции крайних знаков " 0 " определяют знаки, всегда включаемые в выходную строку. Строка " 00 " приводит к округлению значения до ближайшего знака, предшествующего разделителю, если используется исключение из округления нуля. Например, в результате форматирования числа 34,5 с помощью строки " 00 " будет получена строка " 35 "
# Заместитель цифры Цифра, расположенная в соответствующей позиции форматируемого значения, будет скопирована в выходную строку, если в этой позиции в строке формата присутствует знак " # ". В противном случае в эту позицию ничего не записывается. Обратите внимание, что ноль не будет отображен, если он не является значащей цифрой, даже если это единственный знак строки. Ноль отображается, только если он является значащей цифрой форматируемого значения. Строка формата " ## " приводит к округлению значения до ближайшего знака, предшествующего разделителю, если используется исключение из округления нуля. Например, в результате форматирования числа 34,5 с помощью строки " ## " будет получена строка " 35 "
. Разделитель Первый знак " ." определяет расположение разделителя целой и дробной частей, дополнительные знаки " ." игнорируются. Отображаемый разделитель целой и дробной частей определяется свойством NumberDecimalSeparator объекта NumberFormatInfo
, Разделитель тысяч Знак "," применяется в двух случаях. Во-первых, если знак " ," расположен в строке формата между знаками-заместителями ( 0 или # ) и слева от разделителя целой и дробной частей, то в выходной строке между группами из трех цифр в целой части числа будет вставлен разделитель тысяч. Отображаемый разделитель целой и дробной частей определяется свойством NumberGroupSeparator текущего объекта NumberFormatInfo.

Во-вторых, если строка формата содержит один или несколько знаков " ," сразу после разделителя целой и дробной частей, число будет разделено на 1000 столько раз, сколько раз знак " ," встречается в строке формата. Например, после форматирования строки " 0,," значение 100000000 будет преобразовано в " 100 ". Применение этого знака для масштабирования не включает в строку разделитель тысяч. Таким образом, чтобы разделить число на миллион и вставить разделители тысяч, следует использовать строку формата " #,##0,,"

% Заместитель процентов При использовании этого знака число перед форматированием будет умножено на 100. В соответствующую позицию выходной строки будет вставлен знак " % ". Знак процента определяется текущим классом NumberFormatInfo
E0
 E+0
 E–0
 e0
 e+0
 e–0
Научная нотация Если в строке формата присутствует один из знаков " E ", " E+ ", " E– ", " e ", " e+ " или " e– ", за которым следует по крайней мере один знак " 0 ", число представляется в научной нотации; между числом и экспонентой вставляется знак " E " или " e ". Минимальная длина экспоненты определяется количеством нулей, расположенных за знаком формата. Знаки " E+ " и " e+ " устанавливают обязательное отображение знака "плюс" или "минус" перед экспонентой. Знаки " E ", " e ", " E– " и " e– " устанавливают отображение знака только для отрицательных чисел
\ Escape-знак В языке C# и управляемых расширениях C++ знак, следующий в строке формата за обратной косой чертой, воспринимается как escape-последовательность. Этот знак используется с обычными последовательностями форматирования (например, \n — новая строка).

Чтобы использовать обратную косую черту как знак, в некоторых языках ее необходимо удвоить. В противном случае она будет интерпретирована компилятором как escape-последовательность. Чтобы отобразить обратную косую черту, используйте строку " \\ ".

Обратите внимание, что escape-знак не поддерживается в Visual Basic, однако объект ControlChars обладает некоторой функциональностью

'ABC' "ABC" Строка букв Знаки, заключенные в одинарные или двойные кавычки, копируются в выходную строку без форматирования
; Разделитель секций Знак " ; " служит для разделения секций положительных, отрицательных чисел и нулей в строке формата
Другие Все остальные знаки Все остальные знаки копируются в выходную строку в соответствующие позиции

Строки формата с фиксированной запятой (не содержащие подстрок " E0 ", " E+0 ", " E–0 ", " e0 ", " e+0 " или " e–0 ") ОКРУГЛЯЮТ значение с точностью, заданной количеством знаков-заместителей справа от разделителя целой и дробной частей.

Если в строке формата нет разделителя (точки), число округляется до ближайшего целого значения.

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

kewezok kewezok
kewezok kewezok
Елена Шляхт
Елена Шляхт
Объясните плиз в чем отличие а++ от ++а
Почему результат разный?
int a=0, b=0;
Console.WriteLine(a++); //0
Console.WriteLine(++b); //1
a++;
++b;
Console.WriteLine(a); //2
Console.WriteLine(b); //2