다음을 통해 공유


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

업데이트: 2008년 7월

사용자가 하나 이상의 사용자 지정 숫자 형식 지정자를 사용하여 만드는 사용자 지정 숫자 형식 문자열은 숫자 데이터의 형식 지정 방법을 정의합니다. 사용자 지정 숫자 형식 문자열은 표준 숫자 형식 문자열이 아닌 모든 문자열과 같은 의미로 정의됩니다.

다음 표에서는 사용자 지정 숫자 형식 지정자를 설명합니다. 자세한 내용은 표 아래의 설명을 참조하십시오.

형식 지정자

이름

설명

0

0 자리 표시자

형식을 지정할 값이 형식 문자열의 '0'이 표시된 위치에 숫자를 가지고 있으면 해당 숫자가 결과 문자열로 복사되고, 그렇지 않으면 결과 문자열에 '0'이 표시됩니다. 소수점 앞 가장 왼쪽의 '0'과 소수점 뒤 가장 오른쪽 '0'의 위치는 결과 문자열에 항상 표시될 자릿수의 범위를 결정합니다.

"00" 지정자를 사용하면 해당 값이 소수점 뒤 첫째 자리에서 반올림되며 항상 0 이상의 정수 값으로 표시됩니다. 예를 들어, 34.5의 형식을 "00"으로 지정하면 결과는 35가 됩니다.

다음 예제에서는 0 자리 표시자가 포함된 사용자 지정 형식 문자열을 사용하여 여러 가지 값을 표시합니다.

Dim value As Double
value = 123
Console.WriteLine(value.ToString("00000"))
' Displays 00123
value = 1.2
Console.Writeline(value.ToString("0.00", CultureInfo.InvariantCulture))
' Displays 1.20
Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture))
' Displays 01.20
Console.WriteLine(value.ToString("00.00", _
CultureInfo.CreateSpecificCulture("da-DK")))
' Displays 01,20
value = .56
Console.WriteLine(value.ToString("0.0", CultureInfo.InvariantCulture))
' Displays 0.6
value = 1234567890
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture))
' Displays 1,234,567,890
Console.WriteLine(value.ToString("#,#", _
CultureInfo.CreateSpecificCulture("el-GR")))
' Displays 1.234.567.890
double value;
value = 123;
Console.WriteLine(value.ToString("00000"));
// Displays 00123
value = 1.2;
Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture));
// Displays 1.20
Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture));
// Displays 01.20
Console.WriteLine(value.ToString("00.00",
CultureInfo.CreateSpecificCulture("da-DK")));
// Displays 01,20
value = .56;
Console.WriteLine(value.ToString("0.0", CultureInfo.InvariantCulture));
// Displays 0.6
value = 1234567890;
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture));
// Displays 1,234,567,890
Console.WriteLine(value.ToString("#,#",
CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 1.234.567.890

#

10진수 자리 표시자

형식을 지정할 값이 형식 문자열의 '#'이 표시된 위치에 숫자를 가지고 있으면 해당 숫자가 결과 문자열로 복사되고, 그렇지 않으면 결과 문자열의 해당 위치에 아무 것도 저장되지 않습니다.

0이 유효 자릿수가 아니면 이 지정자는 문자열에서 '0'이 유일한 숫자라 할지라도 '0'을 표시하지 않습니다. 표시되는 숫자에서 0이 유효 자릿수이면 이 지정자는 '0'을 표시합니다.

"##" 형식 문자열을 사용하면 해당 값이 소수점 뒤 첫째 자리에서 반올림되며 항상 0 이상의 정수로 표시됩니다. 예를 들어, 34.5의 형식을 "##"으로 지정하면 결과는 35가 됩니다.

다음 예제에서는 10진수 자리 표시자가 포함된 사용자 지정 형식 문자열을 사용하여 여러 가지 값을 표시합니다.

Dim value As Double
value = 1.2
Console.WriteLine(value.ToString("#.##", CultureInfo.InvariantCulture))
' Displays 1.2
value = 123
Console.WriteLine(value.ToString("#####"))
' Displays 123
value = 123456
Console.WriteLine(value.ToString("[##-##-##]"))
' Displays [12-34-56]
value = 1234567890
Console.WriteLine(value.ToString("#"))
' Displays 1234567890
Console.WriteLine(value.ToString("(###) ###-####"))
' Displays (123) 456-7890
double value;
value = 1.2;
Console.WriteLine(value.ToString("#.##", CultureInfo.InvariantCulture));
// Displays 1.2
value = 123;
Console.WriteLine(value.ToString("#####"));
// Displays 123
value = 123456;
Console.WriteLine(value.ToString("[##-##-##]"));
// Displays [12-34-56]
value = 1234567890;
Console.WriteLine(value.ToString("#"));
// Displays 1234567890
Console.WriteLine(value.ToString("(###) ###-####"));
// Displays (123) 456-7890

.

소수점

형식 문자열의 첫 번째 '.' 문자는 형식이 지정될 값에서 소수 구분 기호의 위치를 결정하며, 다른 '.' 문자는 무시됩니다.

결과 문자열에서 소수 구분 기호로 사용되는 실제 문자는 형식 지정을 제어하는 NumberFormatInfo 개체의 NumberDecimalSeparator 속성에 의해 결정됩니다.

다음 예제에서는 소수점 형식 지정자를 사용하여 여러 결과 문자열에서 소수점의 위치를 정의합니다.

Dim value As Double
value = 1.2
Console.Writeline(value.ToString("0.00", CultureInfo.InvariantCulture))
' Displays 1.20
Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture))
' Displays 01.20
Console.WriteLine(value.ToString("00.00", _
CultureInfo.CreateSpecificCulture("da-DK")))
' Displays 01,20
value = .086
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture))
' Displays 8.6%
value = 86000
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture))
' Displays 8.6E+4
double value;
value = 1.2;
Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture));
// Displays 1.20
Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture));
// Displays 01.20
Console.WriteLine(value.ToString("00.00",
CultureInfo.CreateSpecificCulture("da-DK")));
// Displays 01,20
value = .086;
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture));
// Displays 8.6%
value = 86000;
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture));
// Displays 8.6E+4

,

1000 단위 구분 기호 및 숫자 배율

',' 문자는 1000 단위 구분 기호 지정자와 숫자 배율 지정자로 사용됩니다.

1000 단위 구분 기호 지정자: 두 개의 10진수 자리 표시자(0 또는 #) 사이에 정수 계열 자릿수의 형식을 지정하는 하나 이상의 ',' 문자가 지정된 경우, 정수 계열 출력 부분의 각 숫자 그룹 사이에 그룹 구분 문자가 삽입됩니다.

현재 NumberFormatInfo 개체의 NumberGroupSeparatorNumberGroupSizes 속성은 숫자 그룹 구분 기호로 사용되는 문자와 각 숫자 그룹의 크기를 결정합니다. 예를 들어, 문자열 "#,#"과 고정 문화권을 사용하여 숫자 1000의 형식을 지정할 경우 "1,000"이 출력됩니다.

숫자 배율 지정자: 명시적 또는 암시적 소수점의 바로 왼쪽에 하나 이상의 ',' 문자가 지정된 경우 형식을 지정할 숫자는 숫자 배율 지정자가 나타날 때마다 1000으로 나뉩니다. 예를 들어, 문자열 "0,,"을 사용하여 숫자 100000000의 형식을 지정할 경우 "100"이 출력됩니다.

동일한 형식 문자열에 1000 단위 구분 기호와 숫자 배율 지정자를 함께 사용할 수 있습니다. 예를 들어, 문자열 "#,0,,"과 고정 문화권을 사용하여 숫자 1000000000의 형식을 지정할 경우 "1,000"이 출력됩니다.

다음 예제에서는 쉼표를 1000 단위 구분 기호로 사용하는 방법을 보여 줍니다.

Dim value As Double = 1234567890
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture))
' Displays 1,234,567,890
Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture))
' Displays 1,235
double value = 1234567890;
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture));
// Displays 1,234,567,890
Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture));
// Displays 1,235

다음 예제에서는 쉼표를 숫자 배율 지정자로 사용하는 방법을 보여 줍니다.

Dim value As Double = 1234567890
Console.WriteLine(value.ToString("#,,", CultureInfo.InvariantCulture))
' Displays 1235
Console.WriteLine(value.ToString("#,,,", CultureInfo.InvariantCulture))
' Displays 1
Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture))
' Displays 1,235
double value = 1234567890;
Console.WriteLine(value.ToString("#,,", CultureInfo.InvariantCulture));
// Displays 1235
Console.WriteLine(value.ToString("#,,,", CultureInfo.InvariantCulture));
// Displays 1
Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture));
// Displays 1,235

%

백분율 자리 표시자

형식 문자열에 '%' 문자가 있으면 형식이 지정되기 전에 해당 수에 100이 곱해집니다. 형식 문자열에서 '%'가 표시된 위치에는 숫자 자체에서 적절한 기호가 삽입됩니다. 사용되는 백분율 문자는 현재 NumberFormatInfo 클래스에 의해 결정됩니다.

다음 예제에서는 백분율 자리 표시자가 포함된 여러 가지 사용자 지정 형식 문자열을 정의합니다.

Dim value As Double = .086
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture))
' Displays 8.6%
double value = .086;
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture));
// Displays 8.6%

천분율 자리 표시자

형식 문자열에 '‰' 문자(\u2030)가 있으면 형식이 지정되기 전에 해당 수에 1000이 곱해집니다. 형식 문자열에서 '‰'가 있는 위치에는 반환된 문자열에 적절한 천분율 기호가 삽입됩니다. 사용되는 천분율 문자는 문화권별 형식 지정 정보를 제공하는 개체의 NumberFormatInfo.PerMilleSymbol 속성에 정의되어 있습니다.

다음 예제에서는 천분율 자리 표시자가 포함된 사용자 지정 형식 문자열을 정의합니다.

Dim value As Double = .00354
Dim perMilleFmt As String = "#0.## " & ChrW(&h2030)
Console.WriteLine(value.ToString(perMilleFmt, CultureInfo.InvariantCulture))
' Displays 3.54 ‰
double value = .00354;
string perMilleFmt = "#0.## " + '\u2030';
Console.WriteLine(value.ToString(perMilleFmt, CultureInfo.InvariantCulture));
// Displays 3.54‰

E0

E+0

E-0

e0

e+0

e-0

과학적 표기법

형식 문자열에 "E", "E+", "E-", "e", "e+" 또는 "e-" 문자열이 표시되고 바로 뒤에 적어도 하나의 '0' 문자가 오면, 해당 수와 지수 사이에 'E' 또는 'e'가 삽입되는 과학적 표기법으로 형식이 지정됩니다. 과학적 표기법 표시기 뒤에 오는 '0' 문자의 개수는 이 숫자의 지수로 나타낼 최소 자릿수를 결정합니다. "E+" 및 "e+" 형식은 기호 문자(더하기나 빼기)가 지수보다 항상 앞에 와야한다는 것을 나타냅니다. "E", "E-", "e" 또는 "e-" 형식은 기호 문자가 음의 지수 앞에만 온다는 것을 나타냅니다.

다음 예제에서는 과학적 표기법 지정자를 사용하여 여러 가지 숫자 값에 형식을 지정합니다.

Dim value As Double = 86000
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture))
' Displays 8.6E+4
Console.WriteLine(value.ToString("0.###E+000", CultureInfo.InvariantCulture))
' Displays 8.6E+004
Console.WriteLine(value.ToString("0.###E-000", CultureInfo.InvariantCulture))
' Displays 8.6E004
double value = 86000;
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture));
// Displays 8.6E+4
Console.WriteLine(value.ToString("0.###E+000", CultureInfo.InvariantCulture));
// Displays 8.6E+004
Console.WriteLine(value.ToString("0.###E-000", CultureInfo.InvariantCulture));
// Displays 8.6E004

\

이스케이프 문자

C# 및 C++에서 백슬래시 문자가 오면 형식 문자열의 다음 문자가 이스케이프 시퀀스로 해석됩니다. 이것은 '\n'(새 줄)처럼 전통적인 형식 지정 시퀀스에서 사용합니다.

일부 언어에서 이스케이프 문자를 리터럴로 사용할 때는, 이 이스케이프 문자 앞에 이스케이프 문자를 넣어야 합니다. 그렇지 않으면 컴파일러에서 이 문자를 이스케이프 시퀀스로 해석합니다. '\'를 표시하려면 "\\" 문자열을 사용합니다.

Visual Basic에서는 이 이스케이프 문자를 지원하지 않지만 ControlChars에서 같은 기능을 제공합니다.

'ABC'

"ABC"

리터럴 문자열

작은따옴표나 큰따옴표로 묶은 문자는 결과 문자열에 복사되며 형식 지정에 영향을 주지 않습니다.

;

섹션 구분 기호

';' 문자는 형식 문자열에서 양수, 음수 및 0 섹션을 구분하는 데 사용됩니다. 사용자 지정 형식 문자열에 섹션이 두 개 있으면 왼쪽 섹션은 양수 및 0에 대한 형식 지정을 정의하고 오른쪽 섹션은 음수에 대한 형식 지정을 정의합니다. 사용자 지정 형식 문자열에 섹션이 세 개 있으면 왼쪽 섹션은 양수에 대한 형식 지정을, 가운데 섹션은 음수에 대한 형식 지정을, 오른쪽 섹션은 0에 대한 형식 지정을 정의합니다.

다음 예제에서는 섹션 구분 기호 형식 지정자를 사용하여 양수, 음수 및 0의 형식을 각각 다르게 지정합니다.

Dim posValue As Double = 1234
Dim negValue As Double = -1234
Dim fmt As String = "##;(##)"
Console.WriteLine(posValue.ToString(fmt)) ' Displays 1234
Console.WriteLine(negValue.ToString(fmt)) ' Displays (1234)
double posValue = 1234;
double negValue = -1234;
string fmt = "##;(##)";
Console.WriteLine(posValue.ToString(fmt)); // Displays 1234
Console.WriteLine(negValue.ToString(fmt)); // Displays (1234)

기타

다른 모든 문자

다른 모든 문자는 결과 문자열에 복사되며 형식 지정에는 영향을 주지 않습니다.

설명

부동 소수점 무한대 및 NaN

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

제어판 설정

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

반올림 및 고정 소수점 형식 문자열

고정 소수점 형식 문자열, 즉 과학적 표기법 형식 문자가 들어 있지 않은 형식 문자열의 경우 소수점 오른쪽에 있는 10진수 자리 표시자와 같은 개수의 소수 자릿수만큼 숫자가 반올림됩니다. 형식 문자열에 소수점이 없으면 숫자는 가장 근접한 정수로 반올림됩니다. 숫자의 자릿수가 소수점 왼쪽의 10진수 자리 표시자보다 많으면, 초과 숫자가 결과 문자열의 첫 번째 10진수 자리 표시자 바로 앞에 복사됩니다.

섹션 구분 기호 및 조건부 서식

값이 양수, 음수 또는 0인지에 따라 문자열에 다른 형식을 적용할 수 있습니다. 이렇게 하려면 사용자 지정 형식 문자열에 세미콜론으로 구분된 최대 세 개의 섹션이 포함되어야 합니다. 다음 표에서는 이러한 섹션에 대해 설명합니다.

섹션 수

설명

한 섹션

형식 문자열이 모든 값에 적용됩니다.

두 섹션

첫째 섹션은 양수 값과 0에 적용되고, 둘째 섹션은 음수 값에 적용됩니다.

형식을 지정할 수가 음수였는데 두 번째 섹션의 형식에 따라 반올림한 후에 0이 된 경우, 결과값 0은 첫 번째 섹션에 따라 형식이 지정됩니다.

세 섹션

첫째 섹션은 양수 값에 적용되고, 둘째 섹션은 음수 값에 적용되며, 셋째 섹션은 0에 적용됩니다.

세미콜론 사이에 아무 것도 없어서 두 번째 섹션이 비어 있는 경우에는 첫 번째 섹션을 0이 아닌 모든 값에 적용합니다.

형식을 지정할 수가 0이 아니었는데 첫 번째 또는 두 번째 섹션의 형식에 따라 반올림한 후에 0이 된 경우, 결과값 0은 세 번째 섹션에 따라 형식이 지정됩니다.

섹션 구분 기호는 마지막 값의 형식을 지정할 때 숫자와 연관된 기존 형식을 무시합니다. 예를 들어, 섹션 구분 기호가 사용되면 음수 값은 항상 빼기 부호 없이 표시됩니다. 마지막에 형식을 지정한 값에 빼기 부호를 붙이려면 빼기 부호를 사용자 지정 형식 지정자의 일부로 명시적으로 포함시켜야 합니다.

다음 코드 조각에서는 섹션 구분 기호를 사용하여 형식이 지정된 문자열을 만드는 방법을 보여 줍니다.

Dim MyPos As Double = 19.95
Dim MyNeg As Double = -19.95
Dim MyZero As Double = 0

' In the U.S. English culture, MyString has the value: $19.95.
Dim MyString As String = MyPos.ToString("$#,##0.00;($#,##0.00);Zero")

' In the U.S. English culture, MyString has the value: ($19.95).
' The minus sign is omitted by default.
MyString = MyNeg.ToString("$#,##0.00;($#,##0.00);Zero")

' In the U.S. English culture, MyString has the value: Zero.
MyString = MyZero.ToString("$#,##0.00;($#,##0.00);Zero")
double MyPos = 19.95, MyNeg = -19.95, MyZero = 0.0;

// In the U.S. English culture, MyString has the value: $19.95.
string MyString = MyPos.ToString("$#,##0.00;($#,##0.00);Zero");

// In the U.S. English culture, MyString has the value: ($19.95).
// The minus sign is omitted by default.
MyString = MyNeg.ToString("$#,##0.00;($#,##0.00);Zero");

// In the U.S. English culture, MyString has the value: Zero.
MyString = MyZero.ToString("$#,##0.00;($#,##0.00);Zero");

두 개의 사용자 지정 형식 예제

다음 코드 조각에서는 사용자 지정 숫자 형식 지정을 보여 줍니다. 두 경우 모두에서 사용자 지정 형식 문자열의 10진수 자리 표시자(#)는 숫자 데이터를 표시하고 다른 모든 문자는 출력에 복사됩니다.

Dim myDouble As Double = 1234567890
Dim myString As String = myDouble.ToString( "(###) ### - ####" )
' The value of myString is "(123) 456 – 7890".

Dim MyInt As Integer = 42
MyString = MyInt.ToString( "My Number = #" )
' In the U.S. English culture, MyString has the value: 
' "My Number = 42".
Double myDouble = 1234567890;
String myString = myDouble.ToString( "(###) ### - ####" );
// The value of myString is "(123) 456 – 7890".

int  MyInt = 42;
MyString = MyInt.ToString( "My Number = #" );
// In the U.S. English culture, MyString has the value: 
// "My Number = 42".

참고 항목

개념

숫자 형식 문자열

표준 숫자 형식 문자열

참조

NumberFormatInfo

기타 리소스

형식 지정

변경 기록

날짜

변경 내용

이유

2008년 7월

천분율 자리 표시자가 추가되었습니다.

콘텐츠 버그 수정