Ввод/вывод
К строке может быть применено различное форматирование в зависимости от того, является ли значение положительным, отрицательным или нулевым. Для этого следует создать строку формата, которая состоит из трех секций, разделенных точкой с запятой.
- Одна секция. Строка формата используется для всех значений.
- Две секции. Первая секция форматирует положительные и нулевые значения, вторая — отрицательные. Если число форматируется как отрицательное и становится нулем в результате округления в соответствии с форматированием, нуль форматируется в соответствии со строкой первой секции.
- Три секции. Первая секция форматирует положительные значения, вторая — отрицательные, третья — нули. Вторая секция может быть пустой (две точки с запятой рядом), в этом случае первая секция будет использоваться для форматирования нулевых значений. Если число форматируется как ненулевое и становится нулем в результате округления в соответствии с форматированием, нуль форматируется в соответствии со строкой третьей секции.
При генерации выходной строки в этом типе форматирования не учитывается предыдущее форматирование. Например, при использовании разделителей секций отрицательные значения всегда отображаются без знака "минус". Чтобы конечное форматированное значение содержало знак "минус", его следует явным образом включить в настраиваемый указатель формата. В примере ниже показано применение разделителей секций для форматирования.
Следующий код демонстрирует использование разделителей секций при форматировании строки:
// Объявляются переменные с различными значениями (положительное, // отрицательное, нулевое) 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".