Опубликован: 02.03.2007 | Уровень: специалист | Доступ: свободно | ВУЗ: Российский Государственный Технологический Университет им. К.Э. Циолковского
Лекция 11:

Ввод/вывод

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

  • Одна секция. Строка формата используется для всех значений.
  • Две секции. Первая секция форматирует положительные и нулевые значения, вторая — отрицательные. Если число форматируется как отрицательное и становится нулем в результате округления в соответствии с форматированием, нуль форматируется в соответствии со строкой первой секции.
  • Три секции. Первая секция форматирует положительные значения, вторая — отрицательные, третья — нули. Вторая секция может быть пустой (две точки с запятой рядом), в этом случае первая секция будет использоваться для форматирования нулевых значений. Если число форматируется как ненулевое и становится нулем в результате округления в соответствии с форматированием, нуль форматируется в соответствии со строкой третьей секции.

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

Следующий код демонстрирует использование разделителей секций при форматировании строки:

// Объявляются переменные с различными значениями (положительное, 
 // отрицательное, нулевое)
 double MyPos = 19.95, MyNeg = –19.95, MyZero = 0.0;
 string MyString = MyPos.ToString("$#,##0.00;($#,##0.00);Zero");
 // In the U.S. English culture, MyString has the value: $19.95.
 MyString = MyNeg.ToString("$#,##0.00;($#,##0.00);Zero");
 // In the U.S. English culture, MyString has the value: ($19.95).
 MyString = MyZero.ToString("$#,##0.00;($#,##0.00);Zero");
 // In the U.S. English culture, MyString has the value: Zero.

Приведенная далее таблица иллюстрирует варианты представления выводимых значений в зависимости от используемых строк форматирования. Предполагается, что форматирование проводится в рамках ToString метода, а значения в столбце "Формат" соответствуют используемой строке форматирования.

В столбце "Data type" указывается тип форматируемого значения. В столбце "Значение" – значение, подлежащее форматированию. В столбце "Вывод" отображается результат форматирования строки для U.S. English параметров культуры.

Формат Data type Значение Вывод
##### Double 123 123
00000 Double 123 00123
(###) ### – #### Double 1234567890 (123) 456 – 7890
#.## Double 1.2 1.2
0.00 Double 1.2 1.20
00.00 Double 1.2 01.20
#,# Double 1234567890 1,234,567,890
#,, Double 1234567890 12345
#,,, Double 1234567890 1
#,##0,, Double 1234567890 1,235
#0.##% Double 0.095 9.5%
0.###E+0 Double 95000 9.5E+4
0.###E+000 Double 95000 9.5E+004
0.###E–000 Double 95000 9.5E004
[##–##–##] Double 123456 [12–34–56]
##;(##) Double 1234 1234
##;(##) Double –1234 (1234)

Демонстрация custom number formatting. Еще один пример:

Double myDouble = 1234567890;
 String myString = myDouble.ToString( "(# ##) ### – ####" );
 // The value of myString is "(123) 456 – 7890".
 int MyInt = 42;
 MyString = MyInt.ToString( "My Number \n= #" );
 // In the U.S. English culture, MyString has the value:
 // "My Number
 // = 42".
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