Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]

[C#, ASP.NET] tostring() 표준 숫자 형식 문자열

2016. 4. 15. 10:21programming/c#

728x90

형식

지정자



이름

설명

예제

"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,00 %

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

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

"R" 또는 "r"



라운드트립

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

지원되는 형식: Single, DoubleBigInteger

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

추가 정보: 라운드트립("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됨


표준 숫자 서식 문자열 사용


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

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

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

    C#
    decimal value = 123.456m;
    Console.WriteLine("Your account balance is {0:C2}.", value);
    // Displays "Your account balance is $123.46."
    

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

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

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

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

NumberFormatInfo 속성

설명

CurrencyPositivePattern

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

CurrencyNegativePattern

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

NegativeSign

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

CurrencySymbol

통화 기호를 정의합니다.

CurrencyDecimalDigits

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

CurrencyDecimalSeparator

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

CurrencyGroupSeparator

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

CurrencyGroupSizes

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

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

C#
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진수(0-9) 문자열로 변환하며, 숫자가 음수이면 앞에 빼기 기호를 붙입니다.이 서식은 정수 계열 형식에만 사용할 수 있습니다.

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

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

NumberFormatInfo 속성

설명

NegativeSign

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

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

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

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

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

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

NumberFormatInfo 속성

설명

NegativeSign

계수와 지수가 둘 다 음수임을 나타내는 문자열을 정의합니다.

NumberDecimalSeparator

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

PositiveSign

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

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

C#
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") 서식 지정자는 숫자를 "-ddd.ddd…" 형태의 문자열로 변환합니다. 여기서 각 "d"는 숫자(0-9)를 나타냅니다.숫자가 음수이면 문자열 앞에 빼기 기호가 붙습니다.

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

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

NumberFormatInfo 속성

설명

NegativeSign

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

NumberDecimalSeparator

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

NumberDecimalDigits

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

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

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

숫자 형식

기본 전체 자릿수

Byte 또는 SByte

3개의 자릿수

Int16 또는 UInt16

5개의 자릿수

Int32 또는 UInt32

10개의 자릿수

Int64

19개의 자릿수

UInt64

20개의 자릿수

BigInteger

50개의 자릿수

Single

7개의 자릿수

Double

15개의 자릿수

Decimal

29개의 자릿수

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

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

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

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

NumberFormatInfo 속성

설명

NegativeSign

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

NumberDecimalSeparator

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

PositiveSign

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

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

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

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

NumberFormatInfo 속성

설명

NegativeSign

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

NumberNegativePattern

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

NumberGroupSizes

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

NumberGroupSeparator

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

NumberDecimalSeparator

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

NumberDecimalDigits

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

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

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

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

NumberFormatInfo 속성

설명

PercentPositivePattern

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

PercentNegativePattern

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

NegativeSign

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

PercentSymbol

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

PercentDecimalDigits

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

PercentDecimalSeparator

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

PercentGroupSeparator

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

PercentGroupSizes

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

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

C#
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") 형식 지정자는 문자열로 변환된 숫자 값이 같은 숫자 값으로 다시 구문 분석되도록 하는 데 사용됩니다.이 서식은 Single, DoubleBigInteger 형식에만 사용할 수 있습니다.

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

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

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

NumberFormatInfo 속성

설명

NegativeSign

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

NumberDecimalSeparator

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

PositiveSign

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

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

C#
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
System_CAPS_important중요

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

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

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

표로 이동

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

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

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

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

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



출처 : https://msdn.microsoft.com/ko-kr/library/dwhawy9k%28v=vs.110%29.aspx

728x90