표준 숫자 서식 문자열

표준 숫자 서식 문자열은 일반 숫자 형식의 서식을 지정하는 데 사용됩니다. 표준 숫자 서식 문자열은 [format specifier][precision specifier] 형식을 취합니다. 여기서

  • 형식 지정자는 숫자 형식의 형식(예: 통화 또는 백분율)을 지정하는 단일 알파벳 문자입니다. 공백을 포함하여 영문자가 두 개 이상 포함된 숫자 서식 문자열은 사용자 지정 숫자 서식 문자열로 해석됩니다. 자세한 내용은 사용자 지정 숫자 형식 문자열을 참조하세요.

  • 정밀도 지정자는 결과 문자열의 숫자 수에 영향을 주는 선택적 정수입니다. .NET 7 이상 버전에서 최대 정밀도 값은 999,999,999입니다. .NET 6에서 최대 정밀도 값은 입니다 Int32.MaxValue. 이전 .NET 버전에서 전체 자릿수는 0에서 99까지입니다. 전체 자릿수 지정자는 숫자의 문자열 표현에서 자릿수를 제어합니다. 숫자 자체는 반올림하지 않습니다. 반올림 연산을 수행하려면 Math.Ceiling, Math.Floor 또는 Math.Round 메서드를 사용합니다.

    전체 자릿수 지정자가 결과 문자열의 소수 자릿수를 제어할 때 결과 문자열은 무한 정밀도 결과에 가장 가까운 대표 결과로 반 올림된 숫자를 반영합니다. 동등하게 대표할 수 있는 결과가 두 개 있는 경우:

    • .NET Framework 및.NET Core에서 .NET Core 2.0까지 런타임은 최소 유효 숫자(즉, MidpointRounding.AwayFromZero 사용)를 사용하여 결과를 선택합니다.
    • .NET Core 2.1 이상에서 런타임도 최소 유효 숫자(즉, MidpointRounding.ToEven 사용)를 사용하여 결과를 선택합니다.

    참고

    전체 자릿수 지정자는 결과 문자열의 자릿수를 결정합니다. 선행 또는 후행 공백을 포함한 결과 문자열을 채우려면 서식 항목에서 복합 서식 지정 기능을 사용하고 맞춤 구성 요소를 정의합니다.

표준 숫자 형식 문자열은 다음에 의해 지원됩니다.

서식 문자열을 숫자 또는 날짜 및 시간 값에 적용할 수 있도록 지원하고 결과 문자열을 표시하는 .NET Core Windows Forms 애플리케이션인 서식 유틸리티를 다운로드할 수 있습니다. C#Visual Basic의 소스 코드를 사용할 수 있습니다.

표준 형식 지정자

다음 표에서는 표준 숫자 서식 지정자 및 각 서식 지정자로 생성되는 샘플 출력을 보여 줍니다. 표준 숫자 형식 문자열 사용에 대한 자세한 내용은 Notes 섹션을 참조하고 코드 예제 섹션을 참조하세요.

특정 문화권에 대한 형식이 지정된 문자열의 결과는 다음 예제와 다를 수 있습니다. 운영 체제 설정, 사용자 설정, 환경 변수 및 사용 중인 .NET 버전은 모두 형식에 영향을 줄 수 있습니다. 예를 들어 .NET 5부터 .NET은 플랫폼 간에 문화 형식을 통합하려고 시도합니다. 자세한 내용은 .NET 세계화 및 ICU를 참조하세요.

형식 지정자 이름 Description 예제
"B" 또는 "b" 이진 결과: 이진 문자열입니다.

지원: 정수 형식만(.NET 8 이상).

전체 자릿수 지정자: 결과 문자열의 자릿수.

추가 정보: 이진("B") 형식 지정자입니다.
42("B")
-> 101010

255("b16")
-> 0000000011111111
"C" 또는 "c" 통화 결과: 통화 값.

지원 대상: 모든 숫자 형식.

전체 자릿수 지정자: 십진수의 수.

기본 전체 자릿수 지정자: NumberFormatInfo.CurrencyDecimalDigits에 의해 정의됩니다.

추가 정보: 통화("C") 서식 지정자.
123.456("C", en-US)
-> \$123.46

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

123.456 ("C", ja-JP)
-> 123엔

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

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

-123.456("C3", ja-JP)
-> --123.456
"D" 또는 "d" Decimal 결과: 정수(선택적 음수 기호 포함).

지원 대상: 정수 형식만.

전체 자릿수 지정자: 최소 자릿수.

기본 전체 자릿수 지정자: 필요한 최소 자릿수.

추가 정보: 10진수("D") 서식 지정자.
1234("D")
-> 1234

-1234("D6")
-> -001234
"E" 또는 "e" 지수(과학적 표기법) 결과: 지수 표기법.

지원 대상: 모든 숫자 형식.

전체 자릿수 지정자: 십진수의 수.

기본 전체 자릿수 지정자: 6.

추가 정보: 지수("E") 서식 지정자.
1052.0329112756("E", en-US)
-> 1.052033E+003

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

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

-1052.0329112756("E2", fr-FR)
-> -1,05E+003
"F" 또는 "f" 고정 소수점 결과: 선택적 음수 기호가 있는 정수 부분과 소수 부분.

지원 대상: 모든 숫자 형식.

전체 자릿수 지정자: 십진수의 수.

기본 전체 자릿수 지정자: NumberFormatInfo.NumberDecimalDigits에 의해 정의됩니다.

추가 정보: 고정 소수점("F") 서식 지정자.
1234.567("F", en-US)
-> 1234.57

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

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

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

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

-1234.56("F4", de-DE)
-> -1234,5600
"G" 또는 "g" 일반 결과: 더 간단한 형태의 고정 소수점 또는 과학적 표기법.

지원 대상: 모든 숫자 형식.

전체 자릿수 지정자: 유효 자릿수.

기본 전체 자릿수 지정자: 숫자 형식에 따라 달라집니다.

추가 정보: 일반("G") 서식 지정자.
-123.456("G", en-US)
-> -123.456

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

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

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

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

-1.234567890e-25("G", sv-SE)
-> -1,23456789E-25
"N" 또는 "n" 번호 결과: 선택적 음수 기호가 있는 정수 부분과 소수 부분, 그룹 구분 기호 및 소수 구분 기호.

지원 대상: 모든 숫자 형식.

전체 자릿수 지정자: 원하는 소수 자릿수.

기본 전체 자릿수 지정자: NumberFormatInfo.NumberDecimalDigits에 의해 정의됩니다.

추가 정보: 숫자("N") 서식 지정자.
1234.567("N", en-US)
-> 1,234.57

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

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

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

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

-1234.56("N3", ru-RU)
-> -1 234,560
"P" 또는 "p" 백분율 결과: 100으로 곱하고 백분율 기호와 함께 표시되는 숫자.

지원 대상: 모든 숫자 형식.

전체 자릿수 지정자: 원하는 소수 자릿수.

기본 전체 자릿수 지정자: NumberFormatInfo.PercentDecimalDigits에 의해 정의됩니다.

추가 정보: 백분율("P") 서식 지정자.
1("P", en-US)
-> 100.00%

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

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

-0.39678("P1", fr-FR)
-> -39,7 %
"R" 또는 "r" 라운드트립 결과: 해당 숫자로 라운드트립할 수 있는 문자열.

지원되는 형식: Single, DoubleBigInteger

참고: BigInteger 형식에만 권장됩니다. Double 형식에는 “G17”을 사용하고 Single 형식에는 “G9”을 사용합니다.
전체 자릿수 지정자: 무시됩니다.

추가 정보: 라운드트립("R") 서식 지정자.
123456789.12345678("R")
-> 123456789.12345678

-1234567890.12345678("R")
-> -1234567890.1234567
"X" 또는 "x" 16진수 결과: 16진수 문자열.

지원 대상: 정수 형식만.

전체 자릿수 지정자: 결과 문자열의 자릿수.

추가 정보: 16진수("X") 형식 지정자입니다.
255("X")
-> FF

-1("x")
-> ff

255("x4")
-> 00ff

-1("X4")
-> 00FF
기타 모든 단일 문자 알 수 없는 지정자 결과: 런타임에 FormatException을 throw합니다.

표준 숫자 형식 문자열 사용

참고

이 문서의 C# 예제는 Try.NET 인라인 코드 러너 및 놀이터에서 실행됩니다. 대화형 창에서 예제를 실행하려면 실행 버튼을 선택합니다. 코드를 실행하면 실행을 다시 선택하여 코드를 수정하고 수정된 코드를 실행할 수 있습니다. 수정된 코드는 대화형 창에서 실행되거나, 컴파일이 실패하면 대화형 창에 모든 C# 컴파일러 오류 메시지가 표시됩니다.

표준 숫자 서식 문자열을 사용하여 다음 방법 중 하나로 숫자 값의 서식을 정의할 수 있습니다.

  • 매개 변수가 TryFormat 있는 메서드 또는 메서드의 오버로드에 ToStringformat 전달할 수 있습니다. 다음 예제에서는 숫자 값의 서식을 현재 문화권(이 예제의 경우 en-US)의 통화 문자열로 지정합니다.

    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
    
  • 이 형식 문자열은 String.Format, Console.WriteLineStringBuilder.AppendFormat 같은 메서드와 함께 사용되는 서식 항목의 formatString 인수로 제공될 수 있습니다. 자세한 내용은 복합 서식 지정을 참조하세요. 다음 예제에서는 서식 항목을 사용하여 문자열에 통화 값을 삽입합니다.

    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 인수를 제공하여 숫자 필드의 너비 및 해당 값이 오른쪽 맞춤인지 또는 왼쪽 맞춤인지 지정할 수 있습니다. 다음 예제에서는 28자 필드의 통화 값을 왼쪽 맞춤으로, 14자 필드의 통화 값을 오른쪽 맞춤으로 지정합니다.

    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 인수로 제공될 수 있습니다. 자세한 내용은 C# 참조의 문자열 보간 문서 또는 Visual Basic 참조의 보간된 문자열 문서를 참조하세요.

다음 단원에서는 각 표준 숫자 서식 문자열에 대해 자세히 설명합니다.

이진 형식 지정자(B)

이진("B") 형식 지정자는 숫자를 이진 숫자 문자열로 변환합니다. 이 형식은 정수 형식에 대해서만 지원되며 .NET 8 이상에서만 지원됩니다.

전체 자릿수 지정자는 결과 문자열에서 요구하는 최소 자릿수를 나타냅니다. 필요하면 수의 왼쪽을 0으로 채워서 전체 자릿수 지정자에서 지정한 자릿수를 만듭니다.

결과 문자열은 현재 NumberFormatInfo 개체에 대한 서식 지정 정보의 영향을 받지 않습니다.

통화 형식 지정자(C)

통화("C") 서식 지정자는 숫자를 통화 금액을 나타내는 숫자로 변환합니다. 전체 자릿수 지정자는 결과 문자열에 필요한 소수 자릿수를 나타냅니다. 전체 자릿수 지정자를 생략하면 NumberFormatInfo.CurrencyDecimalDigits 속성에 의해 기본 전체 자릿수가 정의됩니다.

서식을 지정할 값의 소수 자릿수가 지정된 소수 자릿수 또는 기본 소수 자릿수보다 크면 결과 문자열에서 소수 값이 반올림됩니다. 지정한 소수 자릿수의 오른쪽에 있는 값이 5 이상인 경우 결과 문자열에서 마지막 자릿수가 양수인 경우 올림, 음수인 경우 내림됩니다(Round Away From Zero 방식).

결과 문자열은 현재 NumberFormatInfo 개체의 서식 지정 정보에 영향을 받습니다. 다음 표에서는 반환된 문자열의 서식을 제어하는 NumberFormatInfo 속성을 보여 줍니다.

NumberFormatInfo 속성 설명
CurrencyPositivePattern 양수 값의 통화 기호 위치를 정의합니다.
CurrencyNegativePattern 음수 값의 통화 기호 위치를 정의하고 음수 기호를 괄호로 나타낼지 아니면 NegativeSign 속성으로 나타낼지 여부를 지정합니다.
NegativeSign CurrencyNegativePattern이 괄호가 사용되지 않음을 나타내는 경우에 사용되는 음수 기호를 정의합니다.
CurrencySymbol 통화 기호를 정의합니다.
CurrencyDecimalDigits 통합 값의 기본 소수 자릿수를 정의합니다. 전체 자릿수 지정자를 사용하여 이 값을 재정의할 수 있습니다.
CurrencyDecimalSeparator 정수 부분과 소수 부분을 구분하는 문자열을 정의합니다.
CurrencyGroupSeparator 정수 그룹을 구분하는 문자열을 정의합니다.
CurrencyGroupSizes 그룹에 표시할 정수 자릿수를 정의합니다.

다음 예제에서는 통화 서식 지정자를 사용하여 Double 값의 서식을 지정합니다.

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
//       12.345,679 kr
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

10진수 형식 지정자(D)

10진수("D") 서식 지정자는 숫자를 10진수(0-9) 문자열로 변환하며, 숫자가 음수이면 앞에 빼기 기호를 붙입니다. 이 서식은 정수 계열 형식에만 사용할 수 있습니다.

전체 자릿수 지정자는 결과 문자열에서 요구하는 최소 자릿수를 나타냅니다. 필요하면 수의 왼쪽을 0으로 채워서 전체 자릿수 지정자에서 지정한 자릿수를 만듭니다. 전체 자릿수 지정자가 지정되지 않은 경우 기본값은 앞에 0이 없이 정수를 나타내는 데 필요한 최소값입니다.

결과 문자열은 현재 NumberFormatInfo 개체의 서식 지정 정보에 영향을 받습니다. 다음 표와 같이 단일 속성은 결과 문자열의 서식에 영향을 줍니다.

NumberFormatInfo 속성 설명
NegativeSign 숫자가 음수임을 나타내는 문자열을 정의합니다.

다음 예제에서는 10진수 서식 지정자를 사용하여 Int32 값의 서식을 지정합니다.

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

지수 형식 지정자(E)

지수("E") 서식 지정자는 숫자를 "-d.ddd…E+ddd" 또는 "-d.ddd…e+ddd" 형태의 문자열로 변환합니다. 여기서 각 "d"는 숫자(0-9)를 나타냅니다. 숫자가 음수이면 문자열 앞에 빼기 기호가 붙습니다. 소수점 앞에는 항상 숫자가 하나만 있어야 합니다.

전체 자릿수 지정자는 소수점 뒤에 필요한 자릿수를 나타냅니다. 전체 자릿수 지정자가 생략되면 소수점 뒤에 기본 6자리가 사용됩니다.

서식 지정자의 대/소문자에 따라 지수에 "E" 또는 "e" 접두사를 붙일 것인지가 결정됩니다. 지수는 항상 더하기 또는 빼기 기호가 포함된 최소 3자리로 구성됩니다. 필요하면 지수를 0으로 채워서 이 조건을 만족시킵니다.

결과 문자열은 현재 NumberFormatInfo 개체의 서식 지정 정보에 영향을 받습니다. 다음 표에서는 반환된 문자열의 서식을 제어하는 NumberFormatInfo 속성을 보여 줍니다.

NumberFormatInfo 속성 설명
NegativeSign 계수와 지수가 둘 다 음수임을 나타내는 문자열을 정의합니다.
NumberDecimalSeparator 계수에서 정수 부분과 소수 부분을 구분하는 문자열을 정의합니다.
PositiveSign 지수가 양수임을 나타내는 문자열을 정의합니다.

다음 예제에서는 지수 서식 지정자를 사용하여 Double 값의 서식을 지정합니다.

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

고정 소수점 형식 지정자(F)

고정 소수점("F") 서식 지정자는 숫자를 "-ddd.ddd…" 형태의 문자열로 변환합니다. 여기서 각 "d"는 숫자(0-9)를 나타냅니다. 숫자가 음수이면 문자열 앞에 빼기 기호가 붙습니다.

전체 자릿수 지정자는 필요한 소수 자릿수를 나타냅니다. 전체 자릿수 지정자를 생략하면 현재 NumberFormatInfo.NumberDecimalDigits 속성에서 숫자 전체 자릿수를 제공합니다.

결과 문자열은 현재 NumberFormatInfo 개체의 서식 지정 정보에 영향을 받습니다. 다음 표에서는 결과 문자열의 서식을 제어하는 NumberFormatInfo 개체의 속성을 보여 줍니다.

NumberFormatInfo 속성 설명
NegativeSign 숫자가 음수임을 나타내는 문자열을 정의합니다.
NumberDecimalSeparator 정수 부분과 소수 부분을 구분하는 문자열을 정의합니다.
NumberDecimalDigits 기본 소수 자릿수를 정의합니다. 전체 자릿수 지정자를 사용하여 이 값을 재정의할 수 있습니다.

다음 예제에서는 고정 소수점 서식 지정자를 사용하여 DoubleInt32 값의 서식을 지정합니다.

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                        

일반 형식 지정자(G)

일반("G") 서식 지정자는 숫자의 형식 및 전체 자릿수 지정자의 유무에 따라 숫자를 고정 소수점 또는 과학적 표기법 중에서 더 간단한 서식으로 변환합니다. 전체 자릿수 지정자는 결과 문자열에 표시할 수 있는 최대 유효 자릿수를 정의합니다. 전체 자릿수 지정자가 생략되거나 0이면 다음 표에 나와 있는 대로 숫자의 형식에 따라 기본 자릿수가 결정됩니다.

숫자 형식 기본 전체 자릿수
Byte 또는 SByte 3개의 자릿수
Int16 또는 UInt16 5개의 자릿수
Int32 또는 UInt32 10개의 자릿수
Int64 19개의 자릿수
UInt64 20개의 자릿수
BigInteger 무제한("R"과 동일)
Half 숫자를 나타내는 가장 작은 라운드트립 가능 자릿수
Single 숫자를 나타내는 가장 작은 라운드트립 가능 자릿수입니다(.NET Framework G7이 기본값임).
Double 숫자를 나타내는 가장 작은 라운드트립 가능 숫자 수입니다(.NET Framework G15가 기본값임).
Decimal 숫자를 나타내는 가장 작은 라운드트립 가능 자릿수

숫자를 과학적 표기법으로 나타낸 값이 -5보다 크고 전체 자릿수 지정자보다 작으면 고정 소수점 표기법이 사용되고 그러지 않으면 과학적 표기법이 사용됩니다. 필요한 경우 결과에 소수점이 포함되고 소수점 뒤에 오는 0은 생략됩니다. 전체 자릿수 지정자가 있고 결과의 유효 숫자가 지정된 자릿수를 초과하면 뒤에 오는 초과 자릿수는 반올림을 통해 제거됩니다.

그러나 숫자가 Decimal일 때 전체 자릿수 지정자가 생략되면 항상 고정 소수점 표기법이 사용되며 뒤에 오는 0은 그대로 표시됩니다.

과학적 표기법이 사용되면 서식 지정자가 'G'인 경우 결과의 지수 값 앞에 "E"가 붙고 서식 지정자가 "g"인 경우 앞에 "e"가 붙습니다. 지수는 최소한 2자리로 구성됩니다. 이는 지수 서식 지정자에 의해 생성되며 계수가 최소한 3자리로 구성되는 과학적 표기법의 서식과 다른 점입니다.

값과 함께 Double 사용할 경우 "G17" 형식 지정자는 원래 Double 값이 성공적으로 왕복되도록 합니다. Double 이는 최대 17자리의 정밀도를 제공하는 IEEE 754-2008 규격 배정밀도(binary64) 부동 소수점 숫자이기 때문입니다. .NET Framework "R" 형식 지정자 대신 사용하는 것이 좋습니다. 경우에 따라 "R"이 성공적으로 왕복 배정밀도 부동 소수점 값에 실패하기 때문에 입니다.

Single 값과 함께 사용될 때 “G9” 형식 지정자는 원래 Single 값이 성공적으로 라운드트립되도록 합니다. Single 최대 9자리의 정밀도를 제공하는 IEEE 754-2008 규격 단정밀도(binary32) 부동 소수점 숫자이기 때문입니다. 성능을 위해 "R" 형식 지정자 대신 사용하는 것이 좋습니다.

결과 문자열은 현재 NumberFormatInfo 개체의 서식 지정 정보에 영향을 받습니다. 다음 표에서는 결과 문자열의 서식을 제어하는 NumberFormatInfo 속성을 보여 줍니다.

NumberFormatInfo 속성 설명
NegativeSign 숫자가 음수임을 나타내는 문자열을 정의합니다.
NumberDecimalSeparator 정수 부분과 소수 부분을 구분하는 문자열을 정의합니다.
PositiveSign 지수가 양수임을 나타내는 문자열을 정의합니다.

다음 예제에서는 일반 서식 지정자를 사용하여 분류된 부동 소수점 값에 서식을 지정합니다.

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    

숫자 형식 지정자(N)

숫자("N") 서식 지정자는 숫자를 "-d,ddd,ddd.ddd…" 형태의 문자열로 변환합니다. 여기서 "-"는 필요한 경우 음수 기호를 나타내고, "d"는 숫자(0-9)를 나타내고, ","는 그룹 구분 기호를 나타내고, "."은 소수점 기호를 나타냅니다. 전체 자릿수 지정자는 소수점 뒤에 필요한 자릿수를 나타냅니다. 전체 자릿수 지정자를 생략하면 현재 NumberFormatInfo.NumberDecimalDigits 속성에 의해 소수 자릿수가 정의됩니다.

결과 문자열은 현재 NumberFormatInfo 개체의 서식 지정 정보에 영향을 받습니다. 다음 표에서는 결과 문자열의 서식을 제어하는 NumberFormatInfo 속성을 보여 줍니다.

NumberFormatInfo 속성 설명
NegativeSign 숫자가 음수임을 나타내는 문자열을 정의합니다.
NumberNegativePattern 음수 값의 서식을 정의하고 음수 기호를 괄호로 나타낼지 아니면 NegativeSign 속성으로 나타낼지 여부를 지정합니다.
NumberGroupSizes 그룹 구분 기호 사이에 표시할 정수 자릿수를 정의합니다.
NumberGroupSeparator 정수 그룹을 구분하는 문자열을 정의합니다.
NumberDecimalSeparator 정수 부분과 소수 부분을 구분하는 문자열을 정의합니다.
NumberDecimalDigits 기본 소수 자릿수를 정의합니다. 전체 자릿수 지정자를 사용하여 이 값을 재정의할 수 있습니다.

다음 예제에서는 숫자 서식 지정자를 사용하여 분류된 부동 소수점 값에 서식을 지정합니다.

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 

백분율 형식 지정자(P)

백분율("P") 서식 지정자는 숫자를 100으로 곱한 다음 백분율을 나타내는 문자열로 변환합니다. 전체 자릿수 지정자는 필요한 소수 자릿수를 나타냅니다. 전체 자릿수 지정자를 생략하면 현재 PercentDecimalDigits 속성에서 제공하는 기본 숫자 전체 자릿수가 사용됩니다.

다음 표에서는 반환된 문자열의 서식을 제어하는 NumberFormatInfo 속성을 보여 줍니다.

NumberFormatInfo 속성 설명
PercentPositivePattern 양수 값의 백분율 기호 위치를 정의합니다.
PercentNegativePattern 백분율 기호 위치와 음수 값의 음수 기호 위치를 정의합니다.
NegativeSign 숫자가 음수임을 나타내는 문자열을 정의합니다.
PercentSymbol 백분율 기호를 정의합니다.
PercentDecimalDigits 백분율 값의 기본 소수 자릿수를 정의합니다. 전체 자릿수 지정자를 사용하여 이 값을 재정의할 수 있습니다.
PercentDecimalSeparator 정수 부분과 소수 부분을 구분하는 문자열을 정의합니다.
PercentGroupSeparator 정수 그룹을 구분하는 문자열을 정의합니다.
PercentGroupSizes 그룹에 표시할 정수 자릿수를 정의합니다.

다음 예제에서는 백분율 서식 지정자를 사용하여 부동 소수점 값에 서식을 지정합니다.

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 %

왕복 형식 지정자(R)

라운드트립(“R”) 형식 지정자는 문자열로 변환된 숫자 값이 같은 숫자 값으로 다시 구문 분석되도록 시도합니다. 이 형식은 , , SingleDoubleBigInteger 형식에 Half대해서만 지원됩니다.

.NET Framework 및 3.0 이전의 .NET Core 버전에서는 "R" 형식 지정자가 경우에 따라 왕복 Double 값에 실패합니다. 및 Single 값 모두 Double 에 대해 "R" 형식 지정자는 상대적으로 성능이 저하됩니다. 대신 Double 값에는 “G17” 형식 지정자, Single 값에는 “G9” 형식 지정자를 사용하여 원래 값을 라운드트립하는 것이 좋습니다.

이 지정자를 사용하여 BigInteger 값의 서식을 지정하면 해당 문자열 표현에 BigInteger 값의 모든 유효 자릿수가 포함됩니다.

전체 자릿수 지정자는 포함되어 있더라도 무시됩니다. 이 지정자를 사용할 때는 라운드트립이 전체 자릿수보다 우선합니다. 결과 문자열은 현재 NumberFormatInfo 개체의 서식 지정 정보에 영향을 받습니다. 다음 표에서는 결과 문자열의 서식을 제어하는 NumberFormatInfo 속성을 보여 줍니다.

NumberFormatInfo 속성 설명
NegativeSign 숫자가 음수임을 나타내는 문자열을 정의합니다.
NumberDecimalSeparator 정수 부분과 소수 부분을 구분하는 문자열을 정의합니다.
PositiveSign 지수가 양수임을 나타내는 문자열을 정의합니다.

다음 예제에서는 라운드트립 형식 지정자를 사용하여 BigInteger 값의 서식을 지정합니다.

#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  

중요

/platform:x64 또는 /platform:anycpu 스위치를 사용하여 컴파일되고 64비트 시스템에서 실행되는 경우 "R" 표준 숫자 형식 문자열로 형식이 지정된 Double 값이 성공적으로 라운드트립되지 않는 경우가 있습니다. 자세한 내용은 다음 단락을 참조하세요.

또는 /platform:anycpu 스위치를 사용하여 /platform:x64 컴파일하고 64비트 시스템에서 실행하는 경우 "R" 표준 숫자 형식 문자열로 서식이 지정된 값의 Double 문제를 해결하기 위해 "G17" 표준 숫자 형식 문자열을 사용하여 값의 서식 Double 을 지정할 수 있습니다. 다음 예제에서는 성공적으로 라운드트립되지 않는 Double 값에 "R" 형식 문자열을 사용하고 "G17" 형식 문자열도 사용하여 원래 값을 성공적으로 라운드트립합니다.

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

16진수 형식 지정자(X)

16진수("X") 서식 지정자는 숫자를 16진수 문자열로 변환합니다. 서식 지정자의 대/소문자에 따라 9보다 큰 16진수에 대문자를 사용할지 아니면 소문자를 사용할지 여부가 결정됩니다. 예를 들어, "X"를 사용하면 "ABCDEF"가 만들어지고 "x"를 사용하면 "abcdef"가 만들어집니다. 이 서식은 정수 계열 형식에만 사용할 수 있습니다.

전체 자릿수 지정자는 결과 문자열에서 요구하는 최소 자릿수를 나타냅니다. 필요하면 수의 왼쪽을 0으로 채워서 전체 자릿수 지정자에서 지정한 자릿수를 만듭니다.

결과 문자열은 현재 NumberFormatInfo 개체에 대한 서식 지정 정보의 영향을 받지 않습니다.

다음 예제에서는 16진수 서식 지정자를 사용하여 Int32 값의 서식을 지정합니다.

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

참고

이 섹션에는 표준 숫자 형식 문자열 사용에 대한 추가 정보가 포함되어 있습니다.

제어판 설정

제어판에 있는 국가 및 언어 옵션 항목의 설정은 서식 지정 작업으로 생성되는 결과 문자열에 영향을 줍니다. 이러한 설정은 서식을 제어하는 데 사용되는 값을 제공하는 현재 문화권과 연결된 개체를 초기화하는 NumberFormatInfo 데 사용됩니다. 다른 설정을 사용하는 컴퓨터는 다른 결과 문자열을 생성합니다.

또한 현재 시스템 문화권과 같은 문화권을 나타내는 새 CultureInfo 개체를 인스턴스화하는 데 CultureInfo(String) 생성자가 사용된 경우 제어판의 국가 및 언어 옵션 항목을 통해 설정된 사용자 지정 내용이 새 CultureInfo 개체에도 적용됩니다. CultureInfo(String, Boolean) 생성자를 사용하면 시스템의 사용자 지정 내용이 반영되지 않는 CultureInfo 개체를 만들 수 있습니다.

NumberFormatInfo 속성

서식 지정은 현재 NumberFormatInfo 문화권에서 암시적으로 제공되거나 형식 지정을 호출하는 메서드의 매개 변수에 의해 명시적으로 제공되는 현재 개체의 속성에 의해 IFormatProvider 영향을 받습니다. 이 매개 변수에는 NumberFormatInfo 또는 CultureInfo 개체를 지정합니다.

참고

숫자 값 서식 지정에 사용되는 패턴 또는 문자열에 대한 자세한 내용은 NumberFormatInfo 클래스 항목을 참조하세요.

정수 및 부동 소수점 숫자 형식

표준 숫자 서식 지정자에 대한 설명 중에는 정수 계열 및 부동 소수점 숫자 형식이 언급되어 있습니다. 정수 계열 숫자 형식은 Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64BigInteger이고, 부동 소수점 숫자 형식은 , , HalfSingleDouble입니다Decimal.

부동 소수점 무한대 및 NaN

형식 문자열에 관계없이 , Single또는 부동 소수점 형식의 Half값이 양의 무한대, 음의 무한대 또는 숫자(NaN)가 아닌 경우 서식이 지정된 문자열은 현재 적용 가능한 NumberFormatInfo 개체에 의해 지정된 각 PositiveInfinitySymbol, NegativeInfinitySymbol또는 NaNSymbol 속성의 값 Double 입니다.

코드 예제

다음 예제에서는 en-US 문화권 및 모든 표준 숫자 서식 지정자를 사용하여 정수 숫자 값과 부동 소수점 숫자 값의 서식을 지정합니다. 이 예제에서는 두 개의 특정 숫자 형식(DoubleInt32)을 사용하지만 다른 숫자 기본 형식(Byte, SByte, Int64UInt16UInt32Int32Int16BigIntegerDecimalUInt64HalfSingle)에 대해 유사한 결과를 생성합니다.

// 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

참조