Строки стандартных числовых форматовStandard Numeric Format Strings

Строки стандартных числовых форматов служат для форматирования стандартных числовых типов.Standard numeric format strings are used to format common numeric types. Строка стандартных числовых форматов использует формат Axx, где:A standard numeric format string takes the form Axx, where:

  • A — это один буквенный символ, который называют описателем формата.A is a single alphabetic character called the format specifier. Любая строка числового формата, содержащая более одной буквы, включая пробелы, интерпретируется как строка настраиваемого числового формата.Any numeric format string that contains more than one alphabetic character, including white space, is interpreted as a custom numeric format string. Дополнительные сведения см. в разделе Строки настраиваемых числовых форматов.For more information, see Custom Numeric Format Strings.

  • xx — это необязательное целое число, которое называют описателем точности.xx is an optional integer called the precision specifier. Спецификатор точности находится в диапазоне от 0 до 99 и влияет на число цифр в результате.The precision specifier ranges from 0 to 99 and affects the number of digits in the result. Описатель точности управляет количеством цифр в строковом представлении числа.Note that the precision specifier controls the number of digits in the string representation of a number. Он не округляет само число.It does not round the number itself. Для выполнения операции округления используйте метод Math.Ceiling, Math.Floor или Math.Round.To perform a rounding operation, use the Math.Ceiling, Math.Floor, or Math.Round method.

    Если указатель точности ограничивает число цифр дробной части в итоговой строке, числа в итоговых строках округляются к большему по модулю (то есть с использованием MidpointRounding.AwayFromZero).When precision specifier controls the number of fractional digits in the result string, the result strings reflect numbers that are rounded away from zero (that is, using MidpointRounding.AwayFromZero).

    Примечание

    Описатель точности определяет число цифр в результирующей строке.The precision specifier determines the number of digits in the result string. Чтобы заполнить строку результата начальными или конечными пробелами, используйте функцию составного форматирования и определите компонент выравнивания в элементе форматирования.To pad a result string with leading or trailing spaces, use the composite formatting feature and define an alignment component in the format item.

Строки стандартных числовых форматов поддерживаются в следующих сценариях.Standard numeric format strings are supported by:

Совет

Вы можете загрузить Служебную программу форматирования, которая применяет строки формата к значениям даты и времени или числовым значениям и отображает результирующую строку.You can download the Formatting Utility, an application that enables you to apply format strings to either numeric or date and time values and displays the result string.

В следующей таблице приведены описатели стандартного числового формата и примеры выходных данных, формируемых каждым описателем формата.The following table describes the standard numeric format specifiers and displays sample output produced by each format specifier. Дополнительные сведения о использовании строк стандартных числовых форматов см. в разделе Примечания. Обширную демонстрацию их использования см. в разделе Пример.See the Notes section for additional information about using standard numeric format strings, and the Example section for a comprehensive illustration of their use.

Описатель форматаFormat specifier nameName Описание:Description ПримерыExamples
"C" или "c""C" or "c" ВалютаCurrency Результат: значение валюты.Result: A currency value.

Поддерживается: всеми числовыми типами данных.Supported by: All numeric types.

Описатель точности: количество цифр в дробной части.Precision specifier: Number of decimal digits.

Описатель точности по умолчанию: определяется NumberFormatInfo.CurrencyDecimalDigits.Default precision specifier: Defined by NumberFormatInfo.CurrencyDecimalDigits.

Дополнительные сведения см. в подразделе Описатель формата валюты (C).More information: The Currency ("C") Format Specifier.
123.456 ("C", en-US) -> $123.46123.456 ("C", en-US) -> $123.46

123.456 ("C", fr-FR) -> 123,46 €123.456 ("C", fr-FR) -> 123,46 €

123.456 ("C", ja-JP) -> ¥123123.456 ("C", ja-JP) -> ¥123

-123.456 ("C3", en-US) -> ($123.456)-123.456 ("C3", en-US) -> ($123.456)

-123.456 ("C3", fr-FR) -> -123,456 €-123.456 ("C3", fr-FR) -> -123,456 €

-123.456 ("C3", ja-JP) -> -¥123.456-123.456 ("C3", ja-JP) -> -¥123.456
"D" или "d""D" or "d" Десятичное числоDecimal Результат: целочисленные цифры с необязательным отрицательным знаком.Result: Integer digits with optional negative sign.

Поддерживается: только целочисленными типами данных.Supported by: Integral types only.

Описатель точности: минимальное число цифр.Precision specifier: Minimum number of digits.

Описатель точности по умолчанию: минимальное необходимое число цифр.Default precision specifier: Minimum number of digits required.

Дополнительные сведения см. в подразделе Описатель десятичного формата (D).More information: The Decimal("D") Format Specifier.
1234 ("D") -> 12341234 ("D") -> 1234

-1234 ("D6") -> -001234-1234 ("D6") -> -001234
"E" или "e""E" or "e" Экспоненциальный (научный)Exponential (scientific) Результат: экспоненциальная нотация.Result: Exponential notation.

Поддерживается: всеми числовыми типами данных.Supported by: All numeric types.

Описатель точности: количество цифр дробной части.Precision specifier: Number of decimal digits.

Описатель точности по умолчанию: 6.Default precision specifier: 6.

Дополнительные сведения см. в подразделе Описатель экспоненциального формата (E).More information: The Exponential ("E") Format Specifier.
1052.0329112756 ("E", en-US) -> 1.052033E+0031052.0329112756 ("E", en-US) -> 1.052033E+003

1052.0329112756 ("e", fr-FR) -> 1,052033e+0031052.0329112756 ("e", fr-FR) -> 1,052033e+003

-1052.0329112756 ("e2", en-US) -> -1.05e+003-1052.0329112756 ("e2", en-US) -> -1.05e+003

-1052.0329112756 ("E2", fr_FR) -> -1,05E+003-1052.0329112756 ("E2", fr_FR) -> -1,05E+003
"F" или "f""F" or "f" С фиксированной запятойFixed-point Результат: цифры целой и дробной частей с необязательным отрицательным знаком.Result: Integral and decimal digits with optional negative sign.

Поддерживается: всеми числовыми типами данных.Supported by: All numeric types.

Описатель точности: количество цифр в дробной части.Precision specifier: Number of decimal digits.

Описатель точности по умолчанию: определяется NumberFormatInfo.NumberDecimalDigits.Default precision specifier: Defined by NumberFormatInfo.NumberDecimalDigits.

Дополнительные сведения см. в подразделе Описатель формата с фиксированной запятой (F).More information: The Fixed-Point ("F") Format Specifier.
1234.567 ("F", en-US) -> 1234.571234.567 ("F", en-US) -> 1234.57

1234.567 ("F", de-DE) -> 1234,571234.567 ("F", de-DE) -> 1234,57

1234 ("F1", en-US) -> 1234.01234 ("F1", en-US) -> 1234.0

1234 ("F1", de-DE) -> 1234,01234 ("F1", de-DE) -> 1234,0

-1234.56 ("F4", en-US) -> -1234.5600-1234.56 ("F4", en-US) -> -1234.5600

-1234.56 ("F4", de-DE) -> -1234,5600-1234.56 ("F4", de-DE) -> -1234,5600
"G" или "g""G" or "g" ОбщиеGeneral Результат: наиболее компактная запись из двух вариантов — экспоненциального и с фиксированной запятой.Result: The more compact of either fixed-point or scientific notation.

Поддерживается: для всех числовых типов данных.Supported by: All numeric types.

Описатель точности: количество значащих цифр.Precision specifier: Number of significant digits.

Описатель точности по умолчанию: определяется численным типом.Default precision specifier: Depends on numeric type.

Дополнительные сведения см. в подразделе Описатель общего формата (G).More information: The General ("G") Format Specifier.
-123.456 ("G", en-US) -> -123.456-123.456 ("G", en-US) -> -123.456

-123.456 ("G", sv-SE) -> -123,456-123.456 ("G", sv-SE) -> -123,456

123.4546 ("G4", en-US) -> 123.5123.4546 ("G4", en-US) -> 123.5

123.4546 ("G4", sv-SE) -> 123,5123.4546 ("G4", sv-SE) -> 123,5

-1.234567890e-25 ("G", en-US) -> -1.23456789E-25-1.234567890e-25 ("G", en-US) -> -1.23456789E-25

-1.234567890e-25 ("G", sv-SE) -> -1,23456789E-25-1.234567890e-25 ("G", sv-SE) -> -1,23456789E-25
"N" или "n""N" or "n" ЧислоNumber Результат: цифры целой и дробной частей, разделители групп и разделитель целой и дробной частей с необязательным отрицательным знаком.Result: Integral and decimal digits, group separators, and a decimal separator with optional negative sign.

Поддерживается: всеми числовыми типами данных.Supported by: All numeric types.

Описатель точности: желаемое число знаков дробной части.Precision specifier: Desired number of decimal places.

Описатель точности по умолчанию: определяется NumberFormatInfo.NumberDecimalDigits.Default precision specifier: Defined by NumberFormatInfo.NumberDecimalDigits.

Дополнительные сведения см. в подразделе Описатель числового формата (N).More information: The Numeric ("N") Format Specifier.
1234.567 ("N", en-US) -> 1,234.571234.567 ("N", en-US) -> 1,234.57

1234.567 ("N", ru-RU) -> 1 234,571234.567 ("N", ru-RU) -> 1 234,57

1234 ("N1", en-US) -> 1,234.01234 ("N1", en-US) -> 1,234.0

1234 ("N1", ru-RU) -> 1 234,01234 ("N1", ru-RU) -> 1 234,0

-1234.56 ("N3", en-US) -> -1,234.560-1234.56 ("N3", en-US) -> -1,234.560

-1234.56 ("N3", ru-RU) -> -1 234,560-1234.56 ("N3", ru-RU) -> -1 234,560
"P" или "p""P" or "p" ПроцентPercent Результат: число, умноженное на 100 и отображаемое с символом процента.Result: Number multiplied by 100 and displayed with a percent symbol.

Поддерживается: всеми числовыми типами данных.Supported by: All numeric types.

Описатель точности: желаемое число знаков дробной части.Precision specifier: Desired number of decimal places.

Описатель точности по умолчанию: определяется значением NumberFormatInfo.PercentDecimalDigits.Default precision specifier: Defined by NumberFormatInfo.PercentDecimalDigits.

Дополнительные сведения см. в подразделе Описатель формата процента (P).More information: The Percent ("P") Format Specifier.
1 ("P", en-US) -> 100.00 %1 ("P", en-US) -> 100.00 %

1 ("P", fr-FR) -> 100,00 %1 ("P", fr-FR) -> 100,00 %

-0.39678 ("P1", en-US) -> -39.7 %-0.39678 ("P1", en-US) -> -39.7 %

-0.39678 ("P1", fr-FR) -> -39,7 %-0.39678 ("P1", fr-FR) -> -39,7 %
"R" или "r""R" or "r" Приемо-передачаRound-trip Результат: строка, дающая при обратном преобразовании идентичное число.Result: A string that can round-trip to an identical number.

Поддерживается: Single, Double и BigInteger.Supported by: Single, Double, and BigInteger.

Примечание. Мы рекомендуем использовать только для типа BigInteger.Note: Recommended for the BigInteger type only. Для типов Double используйте "G17", а для типов Single — "G9".For Double types, use "G17"; for Single types, use "G9".
Описатель точности: игнорируется.Precision specifier: Ignored.

Дополнительные сведения см. в подразделе Описатель формата обратного преобразования (R).More information: The Round-trip ("R") Format Specifier.
123456789.12345678 ("R") -> 123456789.12345678123456789.12345678 ("R") -> 123456789.12345678

-1234567890.12345678 ("R") -> -1234567890.1234567-1234567890.12345678 ("R") -> -1234567890.1234567
"X" или "x""X" or "x" ШестнадцатеричныйHexadecimal Результат: шестнадцатеричная строка.Result: A hexadecimal string.

Поддерживается: только целочисленными типами данных.Supported by: Integral types only.

Описатель точности: число цифр в результирующей строке.Precision specifier: Number of digits in the result string.

Дополнительные сведения см. в подразделе Описатель шестнадцатеричного формата (X).More information: The HexaDecimal ("X") Format Specifier.
255 ("X") -> FF255 ("X") -> FF

-1 ("x") -> ff-1 ("x") -> ff

255 ("x4") -> 00ff255 ("x4") -> 00ff

-1 ("X4") -> 00FF-1 ("X4") -> 00FF
Любой другой символAny other single character Неизвестный описательUnknown specifier Результат: порождение исключения FormatException во время выполнения.Result: Throws a FormatException at run time.

Использование строк стандартных числовых форматовUsing Standard Numeric Format Strings

Примечание

Примеры C# в этой статье выполняются во встроенном средстве выполнения кода и на площадке Try.NET.The C# examples in this article run in the Try.NET inline code runner and playground. Нажмите на кнопку Выполнить, чтобы выполнить пример в интерактивном окне.Select the Run button to run an example in an interactive window. После выполнения кода вы можете изменить его и выполнить измененный код, снова нажав на кнопку Выполнить.Once you execute the code, you can modify it and run the modified code by selecting Run again. Либо в интерактивном окне выполняется измененный код, либо, если компиляция завершается с ошибкой, в интерактивном окне отображаются все сообщения об ошибках компилятора C#.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

Строку стандартного числового формата можно использовать для определения форматирования числового значения одним из двух следующих способов:A standard numeric format string can be used to define the formatting of a numeric value in one of two ways:

  • Ее можно передать перегруженному методу ToString, у которого есть параметр format.It can be passed to an overload of the ToString method that has a format parameter. В следующем примере осуществляется форматирование числового значения в качестве строки со значением валюты для текущего языка и региональных параметров (en-US).The following example formats a numeric value as a currency string in the current culture (in this case, the en-US culture).

    Decimal value = static_cast<Decimal>(123.456);
    Console::WriteLine(value.ToString("C2"));
    // Displays $123.46
    
    decimal value = 123.456m;
    Console.WriteLine(value.ToString("C2"));
    // Displays $123.46
    
    Dim value As Decimal = 123.456d
    Console.WriteLine(value.ToString("C2"))         
    ' Displays $123.46
    
  • Эту строку можно передать в качестве аргумента formatString в элемент форматирования, используемый с методами String.Format, Console.WriteLine и StringBuilder.AppendFormat.It can be supplied as the formatString argument in a format item used with such methods as String.Format, Console.WriteLine, and StringBuilder.AppendFormat. Дополнительные сведения см. в разделе Составное форматирование.For more information, see Composite Formatting. В следующем примере элемент форматирования используется для вставки значения валюты в строку.The following example uses a format item to insert a currency value in a string.

    Decimal value = static_cast<Decimal>(123.456);
    Console::WriteLine("Your account balance is {0:C2}.", value);
    // Displays "Your account balance is $123.46."
    
    decimal value = 123.456m;
    Console.WriteLine("Your account balance is {0:C2}.", value);
    // Displays "Your account balance is $123.46."
    
    Dim value As Decimal = 123.456d
    Console.WriteLine("Your account balance is {0:C2}.", value)
    ' Displays "Your account balance is $123.46."
    

    При желании вы можете передать аргумент alignment, чтобы указать ширину числового поля и установить выравнивание по правому или левому краю.Optionally, you can supply an alignment argument to specify the width of the numeric field and whether its value is right- or left-aligned. В следующем примере денежное значение в поле длиной 28 символов выравнивается по левому краю, а денежное значение в поле длиной 14 символов выравнивается по правому краю.The following example left-aligns a currency value in a 28-character field, and it right-aligns a currency value in a 14-character field.

    array<Decimal>^ amounts = { static_cast<Decimal>(16305.32), 
                                static_cast<Decimal>(18794.16) };
    Console::WriteLine("   Beginning Balance           Ending Balance");
    Console::WriteLine("   {0,-28:C2}{1,14:C2}", amounts[0], amounts[1]);
    // Displays:
    //        Beginning Balance           Ending Balance
    //        $16,305.32                      $18,794.16      
    
    decimal[] amounts = { 16305.32m, 18794.16m };
    Console.WriteLine("   Beginning Balance           Ending Balance");
    Console.WriteLine("   {0,-28:C2}{1,14:C2}", amounts[0], amounts[1]);
    // Displays:
    //        Beginning Balance           Ending Balance
    //        $16,305.32                      $18,794.16      
    
    Dim amounts() As Decimal = { 16305.32d, 18794.16d }
    Console.WriteLine("   Beginning Balance           Ending Balance")
    Console.WriteLine("   {0,-28:C2}{1,14:C2}", amounts(0), amounts(1))
    ' Displays:
    '        Beginning Balance           Ending Balance
    '        $16,305.32                      $18,794.16      
    
  • Его можно предоставить в виде аргумента formatString в элементе интерполированного выражения интерполированной строки.It can be supplied as the formatString argument in an interpolated expression item of an interpolated string. Дополнительные сведения см. в разделе Интерполяция строк справочника по C# или разделе Интерполяция строк справочника по Visual Basic.For more information, see the String interpolation topic in the C# reference or the Interpolated strings topic in the Visual Basic reference.

В приведенных ниже разделах содержится подробная информация о всех строках стандартных числовых форматов.The following sections provide detailed information about each of the standard numeric format strings.

Описатель формата валюты ("C")The Currency ("C") Format Specifier

При использовании описателя формата валюты ("C") число преобразуется в строку, представляющую сумму в некоторой валюте.The "C" (or currency) format specifier converts a number to a string that represents a currency amount. Желаемое количество знаков дробной части в результирующей строке задается описателем точности.The precision specifier indicates the desired number of decimal places in the result string. Если описатель точности не задан, точность по умолчанию определяется свойством NumberFormatInfo.CurrencyDecimalDigits.If the precision specifier is omitted, the default precision is defined by the NumberFormatInfo.CurrencyDecimalDigits property.

Если форматируемое значение содержит больше десятичных знаков, чем задано или возможно по умолчанию, в результирующей строке дробное значение округляется.If the value to be formatted has more than the specified or default number of decimal places, the fractional value is rounded in the result string. Если значение справа от заданного числа десятичных знаков больше или равно 5, последний знак в результирующей строке округляется в сторону от нуля.If the value to the right of the number of specified decimal places is 5 or greater, the last digit in the result string is rounded away from zero.

Форматирование результирующей строки определяется сведениями о форматировании в текущем объекте NumberFormatInfo.The result string is affected by the formatting information of the current NumberFormatInfo object. В следующей таблице представлены свойства NumberFormatInfo, обеспечивающие управление форматированием возвращаемой строки.The following table lists the NumberFormatInfo properties that control the formatting of the returned string.

Свойство NumberFormatInfoNumberFormatInfo property Описание:Description
CurrencyPositivePattern Определяет положение символа валюты в положительных значениях.Defines the placement of the currency symbol for positive values.
CurrencyNegativePattern Определяет положение символа валюты в отрицательных значениях и указывает, как именно представляется отрицательный знак: круглыми скобками или свойством NegativeSign.Defines the placement of the currency symbol for negative values, and specifies whether the negative sign is represented by parentheses or the NegativeSign property.
NegativeSign Задает отрицательный знак, используемый в случае, если свойство CurrencyNegativePattern указывает на то, что скобки для отрицания не используются.Defines the negative sign used if CurrencyNegativePattern indicates that parentheses are not used.
CurrencySymbol Определяет символ валюты.Defines the currency symbol.
CurrencyDecimalDigits Определяет количество цифр дробной части в значении валюты по умолчанию.Defines the default number of decimal digits in a currency value. Это значение можно переопределить с помощью описателя точности.This value can be overridden by using the precision specifier.
CurrencyDecimalSeparator Определяет строку, разделяющую целую и дробную части числа.Defines the string that separates integral and decimal digits.
CurrencyGroupSeparator Определяет строку, разделяющую группы цифр целой части.Defines the string that separates groups of integral numbers.
CurrencyGroupSizes Определяет число целочисленных цифр, входящих в группу.Defines the number of integer digits that appear in a group.

В следующем примере значение Double форматируется с помощью спецификатора денежного формата.The following example formats a Double value with the currency format specifier.

double value = 12345.6789;
Console::WriteLine(value.ToString("C", CultureInfo::CurrentCulture));

Console::WriteLine(value.ToString("C3", CultureInfo::CurrentCulture));

Console::WriteLine(value.ToString("C3", 
                  CultureInfo::CreateSpecificCulture("da-DK")));
// The example displays the following output on a system whose
// current culture is English (United States):
//       $12,345.68
//       $12,345.679
//       kr 12.345,679
double value = 12345.6789;
Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture));

Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture));

Console.WriteLine(value.ToString("C3", 
                  CultureInfo.CreateSpecificCulture("da-DK")));
// The example displays the following output on a system whose
// current culture is English (United States):
//       $12,345.68
//       $12,345.679
//       kr 12.345,679
Dim value As Double = 12345.6789
Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture))

Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture))

Console.WriteLine(value.ToString("C3", _
                  CultureInfo.CreateSpecificCulture("da-DK")))
' The example displays the following output on a system whose
' current culture is English (United States):
'       $12,345.68
'       $12,345.679
'       kr 12.345,679

К таблицеBack to table

Описатель десятичного формата ("D")The Decimal ("D") Format Specifier

При использовании описателя десятичного формата ("D") число преобразуется в строку, состоящую из десятичных цифр (0–9); если число отрицательное, перед ним ставится отрицательный знак.The "D" (or decimal) format specifier converts a number to a string of decimal digits (0-9), prefixed by a minus sign if the number is negative. Этот формат доступен только для целых типов.This format is supported only for integral types.

Минимальное количество знаков в выходной строке задается спецификатором точности.The precision specifier indicates the minimum number of digits desired in the resulting string. Недостающие знаки в строке заменяются нулями.If required, the number is padded with zeros to its left to produce the number of digits given by the precision specifier. Если описатель точности не задан, по умолчанию используется минимальное значение, позволяющее представить целое число без нулей в начале.If no precision specifier is specified, the default is the minimum value required to represent the integer without leading zeros.

Форматирование результирующей строки определяется сведениями о форматировании в текущем объекте NumberFormatInfo.The result string is affected by the formatting information of the current NumberFormatInfo object. Как показано в следующей таблице, управление форматированием результирующей строки осуществляется с помощью одного свойства.As the following table shows, a single property affects the formatting of the result string.

Свойство NumberFormatInfoNumberFormatInfo property Описание:Description
NegativeSign Определяет строку, указывающую, что число является отрицательным.Defines the string that indicates that a number is negative.

В следующем примере значение Int32 форматируется с помощью описателя десятичного формата.The following example formats an Int32 value with the decimal format specifier.

int value; 

value = 12345;
Console::WriteLine(value.ToString("D"));
// Displays 12345
Console::WriteLine(value.ToString("D8"));
// Displays 00012345

value = -12345;
Console::WriteLine(value.ToString("D"));
// Displays -12345
Console::WriteLine(value.ToString("D8"));
// Displays -00012345
int value; 

value = 12345;
Console.WriteLine(value.ToString("D"));
// Displays 12345
Console.WriteLine(value.ToString("D8"));
// Displays 00012345

value = -12345;
Console.WriteLine(value.ToString("D"));
// Displays -12345
Console.WriteLine(value.ToString("D8"));
// Displays -00012345
Dim value As Integer 

value = 12345
Console.WriteLine(value.ToString("D"))
' Displays 12345   
Console.WriteLine(value.ToString("D8"))
' Displays 00012345

value = -12345
Console.WriteLine(value.ToString("D"))
' Displays -12345
Console.WriteLine(value.ToString("D8"))
' Displays -00012345

К таблицеBack to table

Описатель экспоненциального формата ("E")The Exponential ("E") Format Specifier

При использовании описателя экспоненциального формата ("E") число преобразуется в строку вида "-d.ddd…E+ddd" или "-d.ddd…e+ddd", где каждый символ "d" обозначает цифру (0–9).The exponential ("E") format specifier converts a number to a string of the form "-d.ddd…E+ddd" or "-d.ddd…e+ddd", where each "d" indicates a digit (0-9). Если число отрицательное, в начале строки ставится отрицательный знак.The string starts with a minus sign if the number is negative. Перед разделителем целой и дробной части всегда стоит ровно одна цифра.Exactly one digit always precedes the decimal point.

Требуемое число знаков дробной части задается спецификатором точности.The precision specifier indicates the desired number of digits after the decimal point. Если спецификатор точности отсутствует, по умолчанию число знаков дробной части равно шести.If the precision specifier is omitted, a default of six digits after the decimal point is used.

Регистр описателя формата задает регистр буквы, стоящей перед экспонентой ("E" или "e").The case of the format specifier indicates whether to prefix the exponent with an "E" or an "e". Экспонента состоит из знака "плюс" или "минус" и трех цифр.The exponent always consists of a plus or minus sign and a minimum of three digits. Недостающие до минимума цифры заменяются нулями, если это необходимо.The exponent is padded with zeros to meet this minimum, if required.

Форматирование результирующей строки определяется сведениями о форматировании в текущем объекте NumberFormatInfo.The result string is affected by the formatting information of the current NumberFormatInfo object. В следующей таблице представлены свойства NumberFormatInfo, обеспечивающие управление форматированием возвращаемой строки.The following table lists the NumberFormatInfo properties that control the formatting of the returned string.

Свойство NumberFormatInfoNumberFormatInfo property Описание:Description
NegativeSign Определяет строку, указывающую на то, что число является отрицательным (как мантисса, так и экспонента).Defines the string that indicates that a number is negative for both the coefficient and exponent.
NumberDecimalSeparator Определяет строку, разделяющую целую и дробную части мантиссы.Defines the string that separates the integral digit from decimal digits in the coefficient.
PositiveSign Определяет строку, указывающую, что экспонента является положительной.Defines the string that indicates that an exponent is positive.

В следующем примере значение Double форматируется с помощью описателя экспоненциального формата.The following example formats a Double value with the exponential format specifier.

double value = 12345.6789;
Console::WriteLine(value.ToString("E", CultureInfo::InvariantCulture));
// Displays 1.234568E+004

Console::WriteLine(value.ToString("E10", CultureInfo::InvariantCulture));
// Displays 1.2345678900E+004

Console::WriteLine(value.ToString("e4", CultureInfo::InvariantCulture));
// Displays 1.2346e+004

Console::WriteLine(value.ToString("E", 
                  CultureInfo::CreateSpecificCulture("fr-FR")));
// Displays 1,234568E+004
double value = 12345.6789;
Console.WriteLine(value.ToString("E", CultureInfo.InvariantCulture));
// Displays 1.234568E+004

Console.WriteLine(value.ToString("E10", CultureInfo.InvariantCulture));
// Displays 1.2345678900E+004

Console.WriteLine(value.ToString("e4", CultureInfo.InvariantCulture));
// Displays 1.2346e+004

Console.WriteLine(value.ToString("E", 
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 1,234568E+004
Dim value As Double = 12345.6789
Console.WriteLine(value.ToString("E", CultureInfo.InvariantCulture))
' Displays 1.234568E+004

Console.WriteLine(value.ToString("E10", CultureInfo.InvariantCulture))
' Displays 1.2345678900E+004

Console.WriteLine(value.ToString("e4", CultureInfo.InvariantCulture))
' Displays 1.2346e+004

Console.WriteLine(value.ToString("E", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 1,234568E+004

К таблицеBack to table

Описатель формата с фиксированной запятой ("F")The Fixed-Point ("F") Format Specifier

При использовании описателя формата с фиксированной запятой ("F") число преобразуется в строку вида "-ddd.ddd…", где каждый символ "d" обозначает цифру (0–9).The fixed-point ("F") format specifier converts a number to a string of the form "-ddd.ddd…" where each "d" indicates a digit (0-9). Если число отрицательное, в начале строки ставится отрицательный знак.The string starts with a minus sign if the number is negative.

Требуемое число знаков дробной части задается спецификатором точности.The precision specifier indicates the desired number of decimal places. Если описатель точности отсутствует, то используется численная точность, определяемая текущим значением свойства NumberFormatInfo.NumberDecimalDigits.If the precision specifier is omitted, the current NumberFormatInfo.NumberDecimalDigits property supplies the numeric precision.

Форматирование результирующей строки определяется сведениями о форматировании в текущем объекте NumberFormatInfo.The result string is affected by the formatting information of the current NumberFormatInfo object. В следующей таблице представлены свойства объекта NumberFormatInfo, обеспечивающие управление форматированием результирующей строки.The following table lists the properties of the NumberFormatInfo object that control the formatting of the result string.

Свойство NumberFormatInfoNumberFormatInfo property Описание:Description
NegativeSign Определяет строку, указывающую, что число является отрицательным.Defines the string that indicates that a number is negative.
NumberDecimalSeparator Определяет строку, разделяющую целую и дробную части числа.Defines the string that separates integral digits from decimal digits.
NumberDecimalDigits Определяет количество цифр дробной части по умолчанию.Defines the default number of decimal digits. Это значение можно переопределить с помощью описателя точности.This value can be overridden by using the precision specifier.

В следующем примере значение Double и значение Int32 форматируются с помощью спецификатора формата с фиксированной точкой.The following example formats a Double and an Int32 value with the fixed-point format specifier.

int integerNumber;
integerNumber = 17843;
Console::WriteLine(integerNumber.ToString("F", 
                  CultureInfo::InvariantCulture));
// Displays 17843.00

integerNumber = -29541;
Console::WriteLine(integerNumber.ToString("F3", 
                  CultureInfo::InvariantCulture));
// Displays -29541.000

double doubleNumber;
doubleNumber = 18934.1879;
Console::WriteLine(doubleNumber.ToString("F", CultureInfo::InvariantCulture));
// Displays 18934.19

Console::WriteLine(doubleNumber.ToString("F0", CultureInfo::InvariantCulture));
// Displays 18934

doubleNumber = -1898300.1987;
Console::WriteLine(doubleNumber.ToString("F1", CultureInfo::InvariantCulture));  
// Displays -1898300.2

Console::WriteLine(doubleNumber.ToString("F3", 
                  CultureInfo::CreateSpecificCulture("es-ES")));
// Displays -1898300,199                        
int integerNumber;
integerNumber = 17843;
Console.WriteLine(integerNumber.ToString("F", 
                  CultureInfo.InvariantCulture));
// Displays 17843.00

integerNumber = -29541;
Console.WriteLine(integerNumber.ToString("F3", 
                  CultureInfo.InvariantCulture));
// Displays -29541.000

double doubleNumber;
doubleNumber = 18934.1879;
Console.WriteLine(doubleNumber.ToString("F", CultureInfo.InvariantCulture));
// Displays 18934.19

Console.WriteLine(doubleNumber.ToString("F0", CultureInfo.InvariantCulture));
// Displays 18934

doubleNumber = -1898300.1987;
Console.WriteLine(doubleNumber.ToString("F1", CultureInfo.InvariantCulture));  
// Displays -1898300.2

Console.WriteLine(doubleNumber.ToString("F3", 
                  CultureInfo.CreateSpecificCulture("es-ES")));
// Displays -1898300,199                        
Dim integerNumber As Integer
integerNumber = 17843
Console.WriteLine(integerNumber.ToString("F", CultureInfo.InvariantCulture))
' Displays 17843.00

integerNumber = -29541
Console.WriteLine(integerNumber.ToString("F3", CultureInfo.InvariantCulture))
' Displays -29541.000

Dim doubleNumber As Double
doubleNumber = 18934.1879
Console.WriteLine(doubleNumber.ToString("F", CultureInfo.InvariantCulture))
' Displays 18934.19

Console.WriteLine(doubleNumber.ToString("F0", CultureInfo.InvariantCulture))
' Displays 18934

doubleNumber = -1898300.1987
Console.WriteLine(doubleNumber.ToString("F1", CultureInfo.InvariantCulture))  
' Displays -1898300.2

Console.WriteLine(doubleNumber.ToString("F3", _ 
                  CultureInfo.CreateSpecificCulture("es-ES")))
' Displays -1898300,199                        

К таблицеBack to table

Описатель общего формата ("G")The General ("G") Format Specifier

При использовании описателя общего формата ("G") число преобразуется в более короткий из двух вариантов: запись с фиксированной запятой или экспоненциальная запись. При этом учитывается тип числа и наличие описателя точности.The general ("G") format specifier converts a number to the more compact of either fixed-point or scientific notation, depending on the type of the number and whether a precision specifier is present. Описатель точности определяет максимальное количество значащих цифр, которые могут быть использованы в результирующей строке.The precision specifier defines the maximum number of significant digits that can appear in the result string. Если описатель точности не задан или равен нулю, точность определяется типом числа, как показано в следующей таблице.If the precision specifier is omitted or zero, the type of the number determines the default precision, as indicated in the following table.

Числовой типNumeric type Точность по умолчаниюDefault precision
Byte или SByteByte or SByte 3 знака3 digits
Int16 или UInt16Int16 or UInt16 5 знака5 digits
Int32 или UInt32Int32 or UInt32 10 знака10 digits
Int64 19 знака19 digits
UInt64 20 знака20 digits
BigInteger Без ограничений (то же, что и R)Unlimited (same as "R")
Single 7 знака7 digits
Double 15 знака15 digits
Decimal 29 знака29 digits

Нотация с фиксированной запятой используется, если экспонента результата в экспоненциальной нотации длиннее пяти знаков, но меньше спецификатора точности, в противном случае используется научная нотация.Fixed-point notation is used if the exponent that would result from expressing the number in scientific notation is greater than -5 and less than the precision specifier; otherwise, scientific notation is used. При необходимости результат содержит разделитель целой и дробной частей; нули в конце дробной части после разделителя отбрасываются.The result contains a decimal point if required, and trailing zeros after the decimal point are omitted. Если описатель точности задан и число значащих цифр результата превосходит указанное значение точности, лишние цифры отбрасываются округлением.If the precision specifier is present and the number of significant digits in the result exceeds the specified precision, the excess trailing digits are removed by rounding.

Тем не менее, если число относится к типу Decimal и описатель точности не задан, всегда используется нотация с фиксированной запятой, а нули в конце не отбрасываются.However, if the number is a Decimal and the precision specifier is omitted, fixed-point notation is always used and trailing zeros are preserved.

Если используется экспоненциальная нотация, регистр буквы, стоящей перед экспонентой, определяется регистром описателя формата (буква "E" соответствует "G", "e" соответствует "g").If scientific notation is used, the exponent in the result is prefixed with "E" if the format specifier is "G", or "e" if the format specifier is "g". Экспонента содержит не менее двух цифр.The exponent contains a minimum of two digits. Это отличает данный формат от экспоненциальной записи, создаваемой при использовании описателя экспоненциального формата, поскольку в последнем случае экспонента содержит не менее трех цифр.This differs from the format for scientific notation that is produced by the exponential format specifier, which includes a minimum of three digits in the exponent.

Обратите внимание, что при использовании совместно со значением Double описатель формата G17 гарантирует обратимость преобразования исходного значения Double.Note that, when used with a Double value, the "G17" format specifier ensures that the original Double value successfully round-trips. Это связано с тем, что Double совместим со стандартом IEEE 754-2008 для чисел двойной точности (binary64) с плавающей запятой, в котором определена точность до 17 значащих цифр.This is because Double is an IEEE 754-2008-compliant double-precision (binary64) floating point number that gives up to 17 significant digits of precision. Мы рекомендуем использовать этот формат вместо описателя формата "R", который в некоторых случаях не гарантирует обратимость преобразования чисел двойной точности с плавающей запятой.We recommend its use instead of the "R" format specifier, since in some cases "R" fails to successfully round-trip double-precision floating point values. В следующем примере представлен один такой случай.The following example illustrates one such case.

using System;

public class Example
{
   public static void Main()
   {
      double original = 0.84551240822557006;
      var rSpecifier = original.ToString("R");
      var g17Specifier = original.ToString("G17");
      
      var rValue = Double.Parse(rSpecifier);
      var g17Value = Double.Parse(g17Specifier);
      
      Console.WriteLine($"{original:G17} = {rSpecifier} (R): {original.Equals(rValue)}");
      Console.WriteLine($"{original:G17} = {g17Specifier} (G17): {original.Equals(g17Value)}");
   }
}
// The example displays the following output:
//     0.84551240822557006 = 0.84551240822557: False
//     0.84551240822557006 = 0.84551240822557006: True
Module Example
   Public Sub Main()
      Dim original As Double = 0.84551240822557006
      Dim rSpecifier = original.ToString("R")
      Dim g17Specifier = original.ToString("G17")
      
      Dim rValue = Double.Parse(rSpecifier)
      Dim g17Value = Double.Parse(g17Specifier)
      
      Console.WriteLine($"{original:G17} = {rSpecifier} (R): {original.Equals(rValue)}")
      Console.WriteLine($"{original:G17} = {g17Specifier} (G17): {original.Equals(g17Value)}")
   End Sub
End Module
' The example displays the following output:
'     0.84551240822557006 = 0.84551240822557 (R): False
'     0.84551240822557006 = 0.84551240822557006 (G17): True
  

При использовании со значением Single описатель формата G9 гарантирует обратимость преобразования исходного значения Single.When used with a Single value, the "G9" format specifier ensures that the original Single value successfully round-trips. Это связано с тем, что Single совместим со стандартом IEEE 754-2008 для чисел одиночной точности (binary32) с плавающей запятой, в котором определена точность до 9 значащих цифр.This is because Single is an IEEE 754-2008-compliant single-precision (binary32) floating point number that gives up to nine significant digits of precision. Из соображений производительности рекомендуется использовать его вместо описателя формата "R".For performance reasons, we recommend its use instead of the "R" format specifier.

Форматирование результирующей строки определяется сведениями о форматировании в текущем объекте NumberFormatInfo.The result string is affected by the formatting information of the current NumberFormatInfo object. В следующей таблице представлены свойства NumberFormatInfo, обеспечивающие управление форматированием результирующей строки.The following table lists the NumberFormatInfo properties that control the formatting of the result string.

Свойство NumberFormatInfoNumberFormatInfo property Описание:Description
NegativeSign Определяет строку, указывающую, что число является отрицательным.Defines the string that indicates that a number is negative.
NumberDecimalSeparator Определяет строку, разделяющую целую и дробную части числа.Defines the string that separates integral digits from decimal digits.
PositiveSign Определяет строку, указывающую, что экспонента является положительной.Defines the string that indicates that an exponent is positive.

В следующем примере различные значения с плавающей запятой форматируются с помощью спецификатора общего формата.The following example formats assorted floating-point values with the general format specifier.

double number;

number = 12345.6789;      
Console::WriteLine(number.ToString("G", CultureInfo::InvariantCulture));
// Displays  12345.6789
Console::WriteLine(number.ToString("G", 
                  CultureInfo::CreateSpecificCulture("fr-FR")));
// Displays 12345,6789
                        
Console::WriteLine(number.ToString("G7", CultureInfo::InvariantCulture));
// Displays 12345.68 

number = .0000023;
Console::WriteLine(number.ToString("G", CultureInfo::InvariantCulture));
// Displays 2.3E-06       
Console::WriteLine(number.ToString("G", 
                  CultureInfo::CreateSpecificCulture("fr-FR")));
// Displays 2,3E-06

number = .0023;
Console::WriteLine(number.ToString("G", CultureInfo::InvariantCulture));
// Displays 0.0023

number = 1234;
Console::WriteLine(number.ToString("G2", CultureInfo::InvariantCulture));
// Displays 1.2E+03

number = Math::PI;
Console::WriteLine(number.ToString("G5", CultureInfo::InvariantCulture));
// Displays 3.1416    
double number;

number = 12345.6789;      
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
// Displays  12345.6789
Console.WriteLine(number.ToString("G", 
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 12345,6789
                        
Console.WriteLine(number.ToString("G7", CultureInfo.InvariantCulture));
// Displays 12345.68 

number = .0000023;
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
// Displays 2.3E-06       
Console.WriteLine(number.ToString("G", 
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 2,3E-06

number = .0023;
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
// Displays 0.0023

number = 1234;
Console.WriteLine(number.ToString("G2", CultureInfo.InvariantCulture));
// Displays 1.2E+03

number = Math.PI;
Console.WriteLine(number.ToString("G5", CultureInfo.InvariantCulture));
// Displays 3.1416    
Dim number As Double

number = 12345.6789      
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture))
' Displays  12345.6789
Console.WriteLine(number.ToString("G", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 12345,6789
                        
Console.WriteLine(number.ToString("G7", CultureInfo.InvariantCulture))
' Displays 12345.68 

number = .0000023
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture))
' Displays 2.3E-06       
Console.WriteLine(number.ToString("G", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 2,3E-06

number = .0023
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture))
' Displays 0.0023

number = 1234
Console.WriteLine(number.ToString("G2", CultureInfo.InvariantCulture))
' Displays 1.2E+03

number = Math.Pi
Console.WriteLine(number.ToString("G5", CultureInfo.InvariantCulture))
' Displays 3.1416    

К таблицеBack to table

Описатель числового формата ("N")The Numeric ("N") Format Specifier

Спецификатор числового формата ("N") преобразует число в стоку вида "-d,ddd,ddd.ddd… ", где знак "-" при необходимости представляет знак отрицательного числа, знак "d" означает цифру (0-9), знак "," — разделитель групп, а знак "." —- разделитель целой и дробной части.The numeric ("N") format specifier converts a number to a string of the form "-d,ddd,ddd.ddd…", where "-" indicates a negative number symbol if required, "d" indicates a digit (0-9), "," indicates a group separator, and "." indicates a decimal point symbol. Требуемое число знаков дробной части задается спецификатором точности.The precision specifier indicates the desired number of digits after the decimal point. Если описатель точности не задан, число десятичных знаков определяется текущим свойством NumberFormatInfo.NumberDecimalDigits.If the precision specifier is omitted, the number of decimal places is defined by the current NumberFormatInfo.NumberDecimalDigits property.

Форматирование результирующей строки определяется сведениями о форматировании в текущем объекте NumberFormatInfo.The result string is affected by the formatting information of the current NumberFormatInfo object. В следующей таблице представлены свойства NumberFormatInfo, обеспечивающие управление форматированием результирующей строки.The following table lists the NumberFormatInfo properties that control the formatting of the result string.

Свойство NumberFormatInfoNumberFormatInfo property Описание:Description
NegativeSign Определяет строку, указывающую, что число является отрицательным.Defines the string that indicates that a number is negative.
NumberNegativePattern Определяет формат отрицательных значений и указывает, как именно представляется отрицательный знак: круглыми скобками или свойством NegativeSign.Defines the format of negative values, and specifies whether the negative sign is represented by parentheses or the NegativeSign property.
NumberGroupSizes Определяет число цифр целой части, стоящих между разделителями групп.Defines the number of integral digits that appear between group separators.
NumberGroupSeparator Определяет строку, разделяющую группы цифр целой части.Defines the string that separates groups of integral numbers.
NumberDecimalSeparator Определяет строку, разделяющую целую и дробную части числа.Defines the string that separates integral and decimal digits.
NumberDecimalDigits Определяет количество цифр дробной части по умолчанию.Defines the default number of decimal digits. Это значение можно переопределить с помощью описателя точности.This value can be overridden by using a precision specifier.

В следующем примере различные значения с плавающей запятой форматируются с помощью спецификатора числового формата.The following example formats assorted floating-point values with the number format specifier.

double dblValue = -12445.6789;
Console::WriteLine(dblValue.ToString("N", CultureInfo::InvariantCulture));
// Displays -12,445.68
Console::WriteLine(dblValue.ToString("N1", 
                  CultureInfo::CreateSpecificCulture("sv-SE")));
// Displays -12 445,7

int intValue = 123456789;
Console::WriteLine(intValue.ToString("N1", CultureInfo::InvariantCulture));
// Displays 123,456,789.0 
double dblValue = -12445.6789;
Console.WriteLine(dblValue.ToString("N", CultureInfo.InvariantCulture));
// Displays -12,445.68
Console.WriteLine(dblValue.ToString("N1", 
                  CultureInfo.CreateSpecificCulture("sv-SE")));
// Displays -12 445,7

int intValue = 123456789;
Console.WriteLine(intValue.ToString("N1", CultureInfo.InvariantCulture));
// Displays 123,456,789.0 
Dim dblValue As Double = -12445.6789
Console.WriteLine(dblValue.ToString("N", CultureInfo.InvariantCulture))
' Displays -12,445.68
Console.WriteLine(dblValue.ToString("N1", _
                  CultureInfo.CreateSpecificCulture("sv-SE")))
' Displays -12 445,7

Dim intValue As Integer = 123456789
Console.WriteLine(intValue.ToString("N1", CultureInfo.InvariantCulture))
' Displays 123,456,789.0 

К таблицеBack to table

Описатель формата процента ("P")The Percent ("P") Format Specifier

При использовании описателя формата процента ("P") число умножается на 100 и преобразуется в строку, представляющую процентную долю.The percent ("P") format specifier multiplies a number by 100 and converts it to a string that represents a percentage. Требуемое число знаков дробной части задается спецификатором точности.The precision specifier indicates the desired number of decimal places. Если описатель точности отсутствует, то используется значение точности числа по умолчанию, заданное свойством PercentDecimalDigits.If the precision specifier is omitted, the default numeric precision supplied by the current PercentDecimalDigits property is used.

В следующей таблице представлены свойства NumberFormatInfo, обеспечивающие управление форматированием возвращаемой строки.The following table lists the NumberFormatInfo properties that control the formatting of the returned string.

Свойство NumberFormatInfoNumberFormatInfo property Описание:Description
PercentPositivePattern Определяет положение символа процента в положительных значениях.Defines the placement of the percent symbol for positive values.
PercentNegativePattern Определяет положение символа процента и отрицательного знака в отрицательных значениях.Defines the placement of the percent symbol and the negative symbol for negative values.
NegativeSign Определяет строку, указывающую, что число является отрицательным.Defines the string that indicates that a number is negative.
PercentSymbol Определяет символ процента.Defines the percent symbol.
PercentDecimalDigits Определяет количество цифр дробной части в значении процента по умолчанию.Defines the default number of decimal digits in a percentage value. Это значение можно переопределить с помощью описателя точности.This value can be overridden by using the precision specifier.
PercentDecimalSeparator Определяет строку, разделяющую целую и дробную части числа.Defines the string that separates integral and decimal digits.
PercentGroupSeparator Определяет строку, разделяющую группы цифр целой части.Defines the string that separates groups of integral numbers.
PercentGroupSizes Определяет число целочисленных цифр, входящих в группу.Defines the number of integer digits that appear in a group.

В следующем примере значения с плавающей запятой форматируются с помощью спецификатора процентного формата.The following example formats floating-point values with the percent format specifier.

double number = .2468013;
Console::WriteLine(number.ToString("P", CultureInfo::InvariantCulture));
// Displays 24.68 %
Console::WriteLine(number.ToString("P", 
                  CultureInfo::CreateSpecificCulture("hr-HR")));
// Displays 24,68%     
Console::WriteLine(number.ToString("P1", CultureInfo::InvariantCulture));
// Displays 24.7 %
double number = .2468013;
Console.WriteLine(number.ToString("P", CultureInfo.InvariantCulture));
// Displays 24.68 %
Console.WriteLine(number.ToString("P", 
                  CultureInfo.CreateSpecificCulture("hr-HR")));
// Displays 24,68%     
Console.WriteLine(number.ToString("P1", CultureInfo.InvariantCulture));
// Displays 24.7 %
Dim number As Double = .2468013
Console.WriteLine(number.ToString("P", CultureInfo.InvariantCulture))
' Displays 24.68 %
Console.WriteLine(number.ToString("P", _
                  CultureInfo.CreateSpecificCulture("hr-HR")))
' Displays 24,68%     
Console.WriteLine(number.ToString("P1", CultureInfo.InvariantCulture))
' Displays 24.7 %

К таблицеBack to table

Описатель формата обратного преобразования ("R")The Round-trip ("R") Format Specifier

Описатель формата обратного преобразования ("R") пытается выполнить преобразование числового значения в строку так, чтобы при обратном преобразовании этой строки можно было получить то же самое числовое значение.The round-trip ("R") format specifier attempts to ensure that a numeric value that is converted to a string is parsed back into the same numeric value. Этот формат поддерживается только для типов Single, Double и BigInteger.This format is supported only for the Single, Double, and BigInteger types.

Для значений Double описатель формата "R" в некоторых случаях не может гарантировать правильное обратное преобразование.For Double values, the "R" format specifier in some cases fails to successfully round-trip the original value. Для значений Double и Single он также обеспечивает относительно низкую производительность.For both Double and Single values, it also offers relatively poor performance. Вместо него мы рекомендуем использовать описатель формата G17 для значений Double и описатель формата G9 для значений Single, которые гарантируют правильное обратное преобразование.Instead, we recommend that you use the "G17" format specifier for Double values and the "G9" format specifier to successfully round-trip Single values.

Если с помощью этого описателя форматируется значение типа BigInteger, то его строковое представление будет содержать все значащие цифры BigInteger.When a BigInteger value is formatted using this specifier, its string representation contains all the significant digits in the BigInteger value.

Хотя описатель точности можно указать, он будет проигнорирован.Although you can include a precision specifier, it is ignored. Приведенные указатели приема-передачи в данном случае имеют преимущество перед указателем точности.Round trips are given precedence over precision when using this specifier.
Форматирование результирующей строки определяется сведениями о форматировании в текущем объекте NumberFormatInfo.The result string is affected by the formatting information of the current NumberFormatInfo object. В следующей таблице представлены свойства NumberFormatInfo, обеспечивающие управление форматированием результирующей строки.The following table lists the NumberFormatInfo properties that control the formatting of the result string.

Свойство NumberFormatInfoNumberFormatInfo property Описание:Description
NegativeSign Определяет строку, указывающую, что число является отрицательным.Defines the string that indicates that a number is negative.
NumberDecimalSeparator Определяет строку, разделяющую целую и дробную части числа.Defines the string that separates integral digits from decimal digits.
PositiveSign Определяет строку, указывающую, что экспонента является положительной.Defines the string that indicates that an exponent is positive.

В следующем примере форматируется значение BigInteger с применением спецификатора формата обратного преобразования.The following example formats a BigInteger value with the round-trip format specifier.

#using <System.Numerics.dll>

using namespace System;
using namespace System::Numerics;

void main()
{ 
   BigInteger value = BigInteger::Pow(Int64::MaxValue, 2);
   Console::WriteLine(value.ToString("R"));
}
// The example displays the following output:
//      85070591730234615847396907784232501249  


using System;
using System.Numerics;

public class Example
{
   public static void Main()
   { 
      var value = BigInteger.Pow(Int64.MaxValue, 2);
      Console.WriteLine(value.ToString("R"));
   }
}                                                                                        // The example displays the following output:
//      85070591730234615847396907784232501249  


Imports System.Numerics

Module Example
   Public Sub Main()
      Dim value = BigInteger.Pow(Int64.MaxValue, 2)
      Console.WriteLine(value.ToString("R"))
   End Sub
End Module
' The example displays the following output:
'      85070591730234615847396907784232501249  

Важно!

В некоторых случаях для значений Double, отформатированных с использованием строки стандартного числового формата "R", не удается успешно выполнить обратное преобразование при компиляции с использованием параметра /platform:x64 или /platform:anycpu и запуска в 64-разрядных системах.In some cases, Double values formatted with the "R" standard numeric format string do not successfully round-trip if compiled using the /platform:x64 or /platform:anycpu switches and run on 64-bit systems. Дополнительные сведения см. в следующем абзаце.See the following paragraph for more information.

Чтобы избежать проблемы со значениями Double, отформатированными с использованием строки стандартного числового формата R, для которых не удалось выполнить обратное преобразование при компиляции с использованием параметра /platform:x64 или /platform:anycpu в 64-разрядных системах, можно отформатировать значения Double с помощью строки стандартного числового формата G17.To work around the problem of Double values formatted with the "R" standard numeric format string not successfully round-tripping if compiled using the /platform:x64 or /platform:anycpu switches and run on 64-bit systems., you can format Double values by using the "G17" standard numeric format string. В примере ниже используется строка формата "R" со значением Double, для которого не удается выполнить обратное преобразование, а также строка формата "G17" для успешного обратного преобразования исходного значения.The following example uses the "R" format string with a Double value that does not round-trip successfully, and also uses the "G17" format string to successfully round-trip the original value.

using System;
using System.Globalization;

public class Example
{
   static void Main(string[] args)
   {
      Console.WriteLine("Attempting to round-trip a Double with 'R':");
      double initialValue = 0.6822871999174;
      string valueString = initialValue.ToString("R",
                                                 CultureInfo.InvariantCulture);
      double roundTripped = double.Parse(valueString,
                                         CultureInfo.InvariantCulture);
      Console.WriteLine("{0:R} = {1:R}: {2}\n",
                        initialValue, roundTripped, initialValue.Equals(roundTripped));

      Console.WriteLine("Attempting to round-trip a Double with 'G17':");
      string valueString17 = initialValue.ToString("G17",
                                                   CultureInfo.InvariantCulture);
      double roundTripped17 = double.Parse(valueString17,
                                           CultureInfo.InvariantCulture);
      Console.WriteLine("{0:R} = {1:R}: {2}\n",
                        initialValue, roundTripped17, initialValue.Equals(roundTripped17));
   }
}
// If compiled to an application that targets anycpu or x64 and run on an x64 system,
// the example displays the following output:
//       Attempting to round-trip a Double with 'R':
//       0.6822871999174 = 0.68228719991740006: False
//
//       Attempting to round-trip a Double with 'G17':
//       0.6822871999174 = 0.6822871999174: True
Imports System.Globalization

Module Example
   Public Sub Main()
      Console.WriteLine("Attempting to round-trip a Double with 'R':")
      Dim initialValue As Double = 0.6822871999174
      Dim valueString As String = initialValue.ToString("R",
                                               CultureInfo.InvariantCulture)
      Dim roundTripped As Double = Double.Parse(valueString,
                                                CultureInfo.InvariantCulture)
      Console.WriteLine("{0:R} = {1:R}: {2}",
                        initialValue, roundTripped, initialValue.Equals(roundTripped))
      Console.WriteLine()
      
      Console.WriteLine("Attempting to round-trip a Double with 'G17':")
      Dim valueString17 As String = initialValue.ToString("G17",
                                                 CultureInfo.InvariantCulture)
      Dim roundTripped17 As Double = double.Parse(valueString17,
                                            CultureInfo.InvariantCulture)
      Console.WriteLine("{0:R} = {1:R}: {2}",
                        initialValue, roundTripped17, initialValue.Equals(roundTripped17))
   End Sub
End Module
' If compiled to an application that targets anycpu or x64 and run on an x64 system,
' the example displays the following output:
'       Attempting to round-trip a Double with 'R':
'       0.6822871999174 = 0.68228719991740006: False
'
'       Attempting to round-trip a Double with 'G17':
'       0.6822871999174 = 0.6822871999174: True

К таблицеBack to table

Описатель шестнадцатеричного формата ("X")The Hexadecimal ("X") Format Specifier

При использовании описателя шестнадцатеричного формата ("X") число преобразуется в строку шестнадцатеричных цифр.The hexadecimal ("X") format specifier converts a number to a string of hexadecimal digits. Регистр шестнадцатеричных цифр больше 9 совпадает с регистром описателя формата.The case of the format specifier indicates whether to use uppercase or lowercase characters for hexadecimal digits that are greater than 9. Например, чтобы получить запись "ABCDEF", задайте описатель X" или, наоборот, задайте описатель "x", чтобы получить "abcdef".For example, use "X" to produce "ABCDEF", and "x" to produce "abcdef". Этот формат доступен только для целых типов.This format is supported only for integral types.

Минимальное количество знаков в выходной строке задается спецификатором точности.The precision specifier indicates the minimum number of digits desired in the resulting string. Недостающие знаки в строке заменяются нулями.If required, the number is padded with zeros to its left to produce the number of digits given by the precision specifier.

Форматирование результирующей строки не зависит от сведений о форматировании в текущем объекте NumberFormatInfo.The result string is not affected by the formatting information of the current NumberFormatInfo object.

В следующем примере значения Int32 форматируются с помощью спецификатора шестнадцатеричного формата.The following example formats Int32 values with the hexadecimal format specifier.

int value; 

value = 0x2045e;
Console::WriteLine(value.ToString("x"));
// Displays 2045e
Console::WriteLine(value.ToString("X"));
// Displays 2045E
Console::WriteLine(value.ToString("X8"));
// Displays 0002045E

value = 123456789;
Console::WriteLine(value.ToString("X"));
// Displays 75BCD15
Console::WriteLine(value.ToString("X2"));
// Displays 75BCD15
int value; 

value = 0x2045e;
Console.WriteLine(value.ToString("x"));
// Displays 2045e
Console.WriteLine(value.ToString("X"));
// Displays 2045E
Console.WriteLine(value.ToString("X8"));
// Displays 0002045E

value = 123456789;
Console.WriteLine(value.ToString("X"));
// Displays 75BCD15
Console.WriteLine(value.ToString("X2"));
// Displays 75BCD15
Dim value As Integer 

value = &h2045e
Console.WriteLine(value.ToString("x"))
' Displays 2045e
Console.WriteLine(value.ToString("X"))
' Displays 2045E
Console.WriteLine(value.ToString("X8"))
' Displays 0002045E

value = 123456789
Console.WriteLine(value.ToString("X"))
' Displays 75BCD15
Console.WriteLine(value.ToString("X2"))
' Displays 75BCD15

К таблицеBack to table

ПримечанияNotes

Настройки панели управленияControl Panel Settings

Параметры элемента панели управления Язык и региональные стандарты влияют на выходную строку, получаемую в результате операции форматирования.The settings in the Regional and Language Options item in Control Panel influence the result string produced by a formatting operation. Эти параметры используются для инициализации объекта NumberFormatInfo, связанного с языком и региональными параметрами текущего потока, откуда берутся значения, используемые для управления форматированием.Those settings are used to initialize the NumberFormatInfo object associated with the current thread culture, which provides values used to govern formatting. Результирующие строки будут различаться на компьютерах с разными параметрами.Computers that use different settings generate different result strings.

Кроме того, если конструктор CultureInfo.CultureInfo(String) используется для создания нового объекта CultureInfo, представляющего язык и региональные параметры, аналогичные текущим в системе, то все настройки, заданные в разделе Язык и региональные стандарты на панели управления, будут применяться к новому объекту CultureInfo.In addition, if the CultureInfo.CultureInfo(String) constructor is used to instantiate a new CultureInfo object that represents the same culture as the current system culture, any customizations established by the Regional and Language Options item in Control Panel will be applied to the new CultureInfo object. Можно воспользоваться конструктором CultureInfo.CultureInfo(String, Boolean) для создания объекта CultureInfo, который не отражает настройки системы.You can use the CultureInfo.CultureInfo(String, Boolean) constructor to create a CultureInfo object that does not reflect a system's customizations.

Свойства NumberFormatInfoNumberFormatInfo Properties

На форматирование влияют свойства текущего объекта NumberFormatInfo, который неявно определяется на основе языка и региональных параметров текущего потока или явно задается параметром IFormatProvider метода, который вызывает форматирование.Formatting is influenced by the properties of the current NumberFormatInfo object, which is provided implicitly by the current thread culture or explicitly by the IFormatProvider parameter of the method that invokes formatting. Укажите объект NumberFormatInfo или объект CultureInfo для этого параметра.Specify a NumberFormatInfo or CultureInfo object for that parameter.

Примечание

Дополнительные сведения о настройке шаблонов или строк, используемых в форматировании числовых значений см. статью о классе NumberFormatInfo.For information about customizing the patterns or strings used in formatting numeric values, see the NumberFormatInfo class topic.

Целочисленные типы и типы с плавающей запятойIntegral and Floating-Point Numeric Types

Некоторые описания спецификаторов стандартных числовых форматов относятся к целочисленным типам и типам с плавающей запятой.Some descriptions of standard numeric format specifiers refer to integral or floating-point numeric types. Целочисленные типы — это Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64 и BigInteger.The integral numeric types are Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, and BigInteger. Числовыми типами с плавающей запятой являются Decimal, Single и Double.The floating-point numeric types are Decimal, Single, and Double.

Бесконечности действительных чисел с плавающей запятой и NaNFloating-Point Infinities and NaN

Если, вне зависимости от строки формата, значение типа с плавающей запятой Single или Double является положительной бесконечностью, отрицательной бесконечностью или не является числом (NaN), отформатированная строка будет содержать значение соответствующего свойства (PositiveInfinitySymbol, NegativeInfinitySymbol или NaNSymbol) применимого в настоящий момент объекта NumberFormatInfo.Regardless of the format string, if the value of a Single or Double floating-point type is positive infinity, negative infinity, or not a number (NaN), the formatted string is the value of the respective PositiveInfinitySymbol, NegativeInfinitySymbol, or NaNSymbol property that is specified by the currently applicable NumberFormatInfo object.

ПримерExample

Примечание

Примеры C# в этой статье выполняются во встроенном средстве выполнения кода и на площадке Try.NET.The C# examples in this article run in the Try.NET inline code runner and playground. Нажмите на кнопку Выполнить, чтобы выполнить пример в интерактивном окне.Select the Run button to run an example in an interactive window. После выполнения кода вы можете изменить его и выполнить измененный код, снова нажав на кнопку Выполнить.Once you execute the code, you can modify it and run the modified code by selecting Run again. Либо в интерактивном окне выполняется измененный код, либо, если компиляция завершается с ошибкой, в интерактивном окне отображаются все сообщения об ошибках компилятора C#.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

В следующем примере с помощью языка и региональных параметров "en-US" и всех описателей стандартных числовых форматов форматируется целочисленное значение и числовое значение с плавающей запятой.The following example formats an integral and a floating-point numeric value using the en-US culture and all the standard numeric format specifiers. В этом примере используются два числовых типа (Double и Int32), но аналогичные результаты были бы получены для любых других числовых типов (Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, BigInteger, Decimal и Single).This example uses two particular numeric types (Double and Int32), but would yield similar results for any of the other numeric base types (Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, BigInteger, Decimal, and Single).

using System;
using System.Globalization;
using System.Threading;

public class NumericFormats
{
   public static void Main()
   {
      // Display string representations of numbers for en-us culture
      CultureInfo ci = new CultureInfo("en-us");
      
      // Output floating point values
      double floating = 10761.937554;
      Console.WriteLine("C: {0}", 
              floating.ToString("C", ci));           // Displays "C: $10,761.94"
      Console.WriteLine("E: {0}", 
              floating.ToString("E03", ci));         // Displays "E: 1.076E+004"
      Console.WriteLine("F: {0}", 
              floating.ToString("F04", ci));         // Displays "F: 10761.9376"         
      Console.WriteLine("G: {0}",  
              floating.ToString("G", ci));           // Displays "G: 10761.937554"
      Console.WriteLine("N: {0}", 
              floating.ToString("N03", ci));         // Displays "N: 10,761.938"
      Console.WriteLine("P: {0}", 
              (floating/10000).ToString("P02", ci)); // Displays "P: 107.62 %"
      Console.WriteLine("R: {0}", 
              floating.ToString("R", ci));           // Displays "R: 10761.937554"            
      Console.WriteLine();
      
      // Output integral values
      int integral = 8395;
      Console.WriteLine("C: {0}", 
              integral.ToString("C", ci));           // Displays "C: $8,395.00"
      Console.WriteLine("D: {0}", 
              integral.ToString("D6", ci));          // Displays "D: 008395" 
      Console.WriteLine("E: {0}", 
              integral.ToString("E03", ci));         // Displays "E: 8.395E+003"
      Console.WriteLine("F: {0}", 
              integral.ToString("F01", ci));         // Displays "F: 8395.0"    
      Console.WriteLine("G: {0}",  
              integral.ToString("G", ci));           // Displays "G: 8395"
      Console.WriteLine("N: {0}", 
              integral.ToString("N01", ci));         // Displays "N: 8,395.0"
      Console.WriteLine("P: {0}", 
              (integral/10000.0).ToString("P02", ci)); // Displays "P: 83.95 %"
      Console.WriteLine("X: 0x{0}", 
              integral.ToString("X", ci));           // Displays "X: 0x20CB"
      Console.WriteLine();
   }
}
Option Strict On

Imports System.Globalization
Imports System.Threading

Module NumericFormats
   Public Sub Main()
      ' Display string representations of numbers for en-us culture
      Dim ci As New CultureInfo("en-us")
      
      ' Output floating point values
      Dim floating As Double = 10761.937554
      Console.WriteLine("C: {0}", _
              floating.ToString("C", ci))           ' Displays "C: $10,761.94"
      Console.WriteLine("E: {0}", _
              floating.ToString("E03", ci))         ' Displays "E: 1.076E+004"
      Console.WriteLine("F: {0}", _
              floating.ToString("F04", ci))         ' Displays "F: 10761.9376"         
      Console.WriteLine("G: {0}", _ 
              floating.ToString("G", ci))           ' Displays "G: 10761.937554"
      Console.WriteLine("N: {0}", _
              floating.ToString("N03", ci))         ' Displays "N: 10,761.938"
      Console.WriteLine("P: {0}", _
              (floating/10000).ToString("P02", ci)) ' Displays "P: 107.62 %"
      Console.WriteLine("R: {0}", _
              floating.ToString("R", ci))           ' Displays "R: 10761.937554"            
      Console.WriteLine()
      
      ' Output integral values
      Dim integral As Integer = 8395
      Console.WriteLine("C: {0}", _
              integral.ToString("C", ci))           ' Displays "C: $8,395.00"
      Console.WriteLine("D: {0}", _
              integral.ToString("D6"))              ' Displays "D: 008395" 
      Console.WriteLine("E: {0}", _
              integral.ToString("E03", ci))         ' Displays "E: 8.395E+003"
      Console.WriteLine("F: {0}", _
              integral.ToString("F01", ci))         ' Displays "F: 8395.0"    
      Console.WriteLine("G: {0}", _ 
              integral.ToString("G", ci))           ' Displays "G: 8395"
      Console.WriteLine("N: {0}", _
              integral.ToString("N01", ci))         ' Displays "N: 8,395.0"
      Console.WriteLine("P: {0}", _
              (integral/10000).ToString("P02", ci)) ' Displays "P: 83.95 %"
      Console.WriteLine("X: 0x{0}", _
              integral.ToString("X", ci))           ' Displays "X: 0x20CB"
      Console.WriteLine()
   End Sub
End Module

См. такжеSee Also

NumberFormatInfo
Custom Numeric Format StringsCustom Numeric Format Strings
Типы форматированияFormatting Types
Практическое руководство. Добавление к числу начальных нулейHow to: Pad a Number with Leading Zeros
Пример. Служебная программа форматирования для .NET Framework 4Sample: .NET Framework 4 Formatting Utility
Составное форматированиеComposite Formatting