표준 숫자 서식 문자열

업데이트: 2011년 3월

표준 숫자 서식 문자열은 일반 숫자 형식의 서식을 지정하는 데 사용됩니다. 표준 숫자 서식 문자열에는 Axx 서식을 사용합니다. 여기서 A는 영문자로서 서식 지정자라고 하며 xx는 선택적 정수로서 전체 자릿수 지정자라고 합니다. 전체 자릿수 지정자는 0에서 99 사이의 정수이며 결과의 자릿수에 영향을 줍니다. 공백을 포함하여 영문자가 두 개 이상 포함된 숫자 서식 문자열은 사용자 지정 숫자 서식 문자열로 해석됩니다. 자세한 내용은 사용자 지정 숫자 서식 문자열을 참조하십시오.

표준 숫자 서식 문자열은 모든 숫자 형식의 ToString 메서드를 오버로드하여 사용할 수 있습니다. 예를 들어 Int32 형식의 ToString(String)ToString(String, IFormatProvider) 메서드에 숫자 서식 문자열을 제공할 수 있습니다. ConsoleStreamWriter 클래스의 일부 Write 및 WriteLine 메서드, String.Format 메서드, StringBuilder.AppendFormat 메서드에 사용되는 .NET Framework 합성 서식 지정 기능을 통해서도 표준 숫자 서식 문자열을 사용할 수 있습니다.

팁

서식 문자열을 숫자 또는 날짜 및 시간 값에 적용할 수 있도록 지원하고 결과 문자열을 표시하는 응용 프로그램인 Format Utility를 다운로드할 수 있습니다.

다음 표에서는 표준 숫자 서식 지정자 및 각 서식 지정자로 생성되는 샘플 출력을 보여 줍니다. 표준 숫자 서식 문자열을 사용하는 방법에 대한 자세한 내용은 참고 단원을 참조하고, 이러한 사용 방법을 자세히 보여 주는 예제를 보려면 예제 단원을 참조하십시오.

서식 지정자

이름

설명

예제

"C" 또는 "c"

통화

결과: 통화 값

지원되는 형식: 모든 숫자 형식

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

기본 전체 자릿수 지정자: System.Globalization.NumberFormatInfo에 의해 정의됨

추가 정보: 통화("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"

10진수

결과: 정수(선택적 음수 기호 포함)

지원되는 형식: 정수 계열 형식만 지원됨

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

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

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

/D

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

고정 소수점

결과: 선택적 음수 기호가 있는 정수 부분과 소수 부분

지원되는 형식: 모든 숫자 형식

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

기본 전체 자릿수 지정자: System.Globalization.NumberFormatInfo에 의해 정의됨

추가 정보: 고정 소수점("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"

숫자

결과: 선택적 음수 기호가 있는 정수 부분과 소수 부분, 그룹 구분 기호 및 소수 구분 기호

지원되는 형식: 모든 숫자 형식

전체 자릿수 지정자: 필요한 소수 자릿수

기본 전체 자릿수 지정자: System.Globalization.NumberFormatInfo에 의해 정의됨

추가 정보: 숫자("N") 서식 지정자

1234.567 ("N", en-US) -> 1,234.57

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

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

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

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

-1234.56 ("N", ru-RU) -> -1 234,560

"P" 또는 "p"

백분율

결과: 100으로 곱하고 백분율 기호와 함께 표시되는 숫자

지원되는 형식: 모든 숫자 형식

전체 자릿수 지정자: 필요한 소수 자릿수

기본 전체 자릿수 지정자: System.Globalization.NumberFormatInfo에 의해 정의됨

추가 정보: 백분율("P") 서식 지정자

1 ("P", en-US) -> 100.00 %

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

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

-0.39678 ("P1", fr-FR) -> -39,7 %

"R" 또는 "r"

라운드트립

결과: 해당 숫자로 라운드트립할 수 있는 문자열

지원되는 형식: Single, DoubleBigInteger

전체 자릿수 지정자: 무시됨

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

/r

/r

"X" 또는 "x"

16진수

결과: 16진수 문자열

지원되는 형식: 정수 계열 형식만 지원됨

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

추가 정보: 16진수("X") 서식 지정자

255 ("X") -> FF

-1 ("x") -> ff

255 ("x4") -> 00ff

-1 ("X4") -> 00FF

기타 모든 단일 문자

알 수 없는 지정자

결과: 런타임에 FormatException이 throw됨

표준 숫자 서식 문자열 사용

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

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

    Dim value As Decimal = 123.456d
    Console.WriteLine(value.ToString("C2"))         
    ' Displays $123.46
    
    decimal value = 123.456m;
    Console.WriteLine(value.ToString("C2"));
    // Displays $123.46
    
  • 이 서식 문자열은 String.Format, Console.WriteLineStringBuilder.AppendFormat 같은 메서드와 함께 사용되는 서식 항목의 formatString 매개 변수에 제공될 수 있습니다. 자세한 내용은 합성 형식 지정을 참조하십시오. 다음 예제에서는 서식 항목을 사용하여 문자열에 통화 값을 삽입합니다.

    Dim value As Decimal = 123.456d
    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."
    

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

통화("C") 서식 지정자

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

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

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

NumberFormatInfo 속성

설명

CurrencyPositivePattern

양수 값의 통화 기호 위치를 정의합니다.

CurrencyNegativePattern

음수 값의 통화 기호 위치를 정의하고 음수 기호를 괄호로 나타낼지 아니면 NegativeSign 속성으로 나타낼지 여부를 지정합니다.

NegativeSign

CurrencyNegativePattern이 괄호가 사용되지 않음을 나타내는 경우에 사용되는 음수 기호를 정의합니다.

CurrencySymbol

통화 기호를 정의합니다.

CurrencyDecimalDigits

통합 값의 기본 소수 자릿수를 정의합니다. 전체 자릿수 지정자를 사용하여 이 값을 재정의할 수 있습니다.

CurrencyDecimalSeparator

정수 부분과 소수 부분을 구분하는 문자열을 정의합니다.

CurrencyGroupSeparator

정수 그룹을 구분하는 문자열을 정의합니다.

CurrencyGroupSizes

그룹에 표시할 정수 자릿수를 정의합니다.

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

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

표로 이동

10진수("D") 서식 지정자

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

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

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

NumberFormatInfo 속성

설명

NegativeSign

숫자가 음수임을 나타내는 문자열을 정의합니다.

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

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

표로 이동

지수("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 값의 서식을 지정합니다.

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

표로 이동

고정 소수점("F") 서식 지정자

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

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

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

NumberFormatInfo 속성

설명

NegativeSign

숫자가 음수임을 나타내는 문자열을 정의합니다.

NumberDecimalSeparator

정수 부분과 소수 부분을 구분하는 문자열을 정의합니다.

NumberDecimalDigits

기본 소수 자릿수를 정의합니다. 전체 자릿수 지정자를 사용하여 이 값을 재정의할 수 있습니다.

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

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

표로 이동

일반("G") 서식 지정자

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

숫자 형식

기본 전체 자릿수

Byte 또는 SByte

3개의 자릿수

Int16 또는 UInt16

5개의 자릿수

Int32 또는 UInt32

10개의 자릿수

Int64

19개의 자릿수

UInt64

20개의 자릿수

BigInteger

29개의 자릿수

Single

7개의 자릿수

Double

15개의 자릿수

Decimal

29개의 자릿수

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

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

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

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

NumberFormatInfo 속성

설명

NegativeSign

숫자가 음수임을 나타내는 문자열을 정의합니다.

NumberDecimalSeparator

정수 부분과 소수 부분을 구분하는 문자열을 정의합니다.

NumberDecimalDigits

기본 소수 자릿수를 정의합니다. 전체 자릿수 지정자를 사용하여 이 값을 재정의할 수 있습니다.

PositiveSign

지수가 양수임을 나타내는 문자열을 정의합니다.

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

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

표로 이동

숫자("N") 서식 지정자

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

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

NumberFormatInfo 속성

설명

NegativeSign

숫자가 음수임을 나타내는 문자열을 정의합니다.

NumberNegativePattern

음수 값의 서식을 정의하고 음수 기호를 괄호로 나타낼지 아니면 NegativeSign 속성으로 나타낼지 여부를 지정합니다.

NumberGroupSizes

그룹 구분 기호 사이에 표시할 정수 자릿수를 정의합니다.

NumberGroupSeparator

정수 그룹을 구분하는 문자열을 정의합니다.

NumberDecimalSeparator

정수 부분과 소수 부분을 구분하는 문자열을 정의합니다.

NumberDecimalDigits

기본 소수 자릿수를 정의합니다. 전체 자릿수 지정자를 사용하여 이 값을 재정의할 수 있습니다.

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

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

표로 이동

백분율("P") 서식 지정자

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

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

NumberFormatInfo 속성

설명

PercentPositivePattern

양수 값의 백분율 기호 위치를 정의합니다.

PercentNegativePattern

백분율 기호 위치와 음수 값의 음수 기호 위치를 정의합니다.

NegativeSign

숫자가 음수임을 나타내는 문자열을 정의합니다.

PercentSymbol

백분율 기호를 정의합니다.

PercentDecimalDigits

백분율 값의 기본 소수 자릿수를 정의합니다. 전체 자릿수 지정자를 사용하여 이 값을 재정의할 수 있습니다.

PercentDecimalSeparator

정수 부분과 소수 부분을 구분하는 문자열을 정의합니다.

PercentGroupSeparator

정수 그룹을 구분하는 문자열을 정의합니다.

PercentGroupSizes

그룹에 표시할 정수 자릿수를 정의합니다.

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

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

표로 이동

라운드트립("R") 서식 지정자

라운드트립("R") 서식 지정자는 문자열로 변환된 숫자 값이 같은 숫자 값으로 다시 구문 분석될 수 있도록 보장해 줍니다. 이 서식은 Single, DoubleBigInteger 형식에만 사용할 수 있습니다.

이 지정자를 사용하여 BigInteger 값의 서식을 지정하면 해당 문자열 표현에 BigInteger 값의 모든 유효 자릿수가 포함됩니다. 이 지정자를 사용하여 Single 또는 Double 값의 서식을 지정하면 Double에는 15자리의 전체 자릿수를, Single에는 7자리의 전체 자릿수를 가진 일반 서식을 사용하여 이 값을 먼저 테스트합니다. 이 값이 같은 숫자 값으로 다시 구문 분석되면 일반 서식 지정자를 통해 서식이 지정됩니다. 이 값이 같은 숫자 값으로 다시 구문 분석되지 못하면 Double 형식에는 17자리 전체 자릿수를, Single 형식에는 9자리 전체 자릿수를 사용하여 이 값의 서식이 지정됩니다.

전체 자릿수 지정자는 포함되어 있더라도 무시됩니다. 이 지정자를 사용할 때는 라운드트립이 전체 자릿수보다 우선합니다.

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

NumberFormatInfo 속성

설명

NegativeSign

숫자가 음수임을 나타내는 문자열을 정의합니다.

NumberDecimalSeparator

정수 부분과 소수 부분을 구분하는 문자열을 정의합니다.

PositiveSign

지수가 양수임을 나타내는 문자열을 정의합니다.

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

Dim value As Double

value = Math.Pi
Console.WriteLine(value.ToString("r"))
' Displays 3.1415926535897931
Console.WriteLine(value.ToString("r", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 3,1415926535897931
value = 1.623e-21
Console.WriteLine(value.ToString("r"))
' Displays 1.623E-21
double value;

value = Math.PI;
Console.WriteLine(value.ToString("r"));
// Displays 3.1415926535897931
Console.WriteLine(value.ToString("r", 
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 3,1415926535897931
value = 1.623e-21;
Console.WriteLine(value.ToString("r"));
// Displays 1.623E-21

표로 이동

16진수("X") 서식 지정자

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

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

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

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

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

표로 이동

참고

제어판 설정

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

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

NumberFormatInfo 속성

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

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

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

부동 소수점 무한대 및 NaN

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

예제

다음 예제에서는 en-US 문화권 및 모든 표준 숫자 서식 지정자를 사용하여 정수 숫자 값과 부동 소수점 숫자 값의 서식을 지정합니다. 이 코드 예제에서는 두 개의 특정 숫자 형식(DoubleInt32)을 사용하지만 다른 기타 숫자 기본 형식(Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, BigInteger, DecimalSingle)을 사용해도 유사한 결과가 생성됩니다.

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
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();
   }
}

참고 항목

작업

방법: 숫자 앞에 0으로 채우기

참조

NumberFormatInfo

개념

사용자 지정 숫자 서식 문자열

형식 서식 지정

변경 기록

날짜

변경 내용

이유

2011년 3월

Format Utility에 대한 링크가 추가되었습니다.

향상된 기능 관련 정보

2010년 7월

"C" 표준 서식 문자열에 Rounding Away From Zero 방식이 사용된다는 정보가 추가되었습니다.

고객 의견