이번 실습에서는 형식 지정자를 이용하여 숫자를 출력하는 방법을 알아보기로 할게요.
이미 이전 강의에서는 출력할 때 문자열 출력 포멧을 알아보았죠.
{index[,alignment][:formatString]}
{인덱스[,배치][:포멧문자열]}
포멧 문자열에는 출력할 내용을 어떠한 형식으로 출력할 것이지 나타내는 표현도 나타낼 수 있습니다. 이를 형식 지정자라 불러요.
이번 실습에서는 형식 지정자를 이용하여 숫자를 표현하는 방법을 다룰거예요. 다음은 숫자를 표현할 때 사용하는 형식 지정자와 간략한 예를 나타낸 것입니다.
먼저 실습에 사용할 변수를 선언하세요.
int iv = 12345; double dv = 12345.6789; double dv2 = 0.23;
알파벳 “D”는 10진수를 나타내는 형식 지정자입니다.
//D: 10 진수
Console.WriteLine("{0:D}", iv);
Console.WriteLine(iv.ToString("D"));
실행 결과 12345 12345
알파벳 “E”는 지수 표기를 나타내는 형식 지정자입니다. 예를 들어 123.4와 같은 표현을 1.234E+002처럼 나타낼 수 있어요. 여기서 E+002는 10의 2승을 의미합니다.
//E: 지수 Console.WriteLine("{0:E}",dv); Console.WriteLine(dv.ToString("E"));
실행 결과 1.234568E+004 1.234568E+004
알파벳 “F”는 고정 소수점 표현을 나타내는 형식 지정자입니다. 일반적으로 우리가 사용하는 표현이 고정 소수점 표현입니다.
//F: 고정 소수점 Console.WriteLine("{0:F}", dv); Console.WriteLine(dv.ToString("F"));
실행 결과 12345.68 12345.68
알파벳 “G”는 지수 표현이나 고정 소수점 표현 중에 간단한 형태로 표현하는 것으로 일반 표현이라고 부릅니다.
//G:일반
Console.WriteLine("{0:G}", dv);
Console.WriteLine(dv.ToString("G"));
Console.WriteLine("{0:G}", 0.0000023);
실행 결과 12345.6789 12345.6789 2.3E-06
알파벳 “N”은 현실에서 사용하는 숫자를 나타냅니다. 예를 들어 12345와 같은 수를 12,345처럼 세자리마다 콤마를 붙여서 나타내는 것을 말합니다.
//N:숫자
Console.WriteLine("{0:N}", 123456789);
실행 결과 123,456,789.00
//P: 백분율
Console.WriteLine("{0:P}", dv2);
Console.WriteLine(dv2.ToString("P"));
실행 결과 23.00% 23.00%
알파벳 “X”는 16진수를 의미합니다. 가독성을 높이기 위해 16진수라는 것을 인지할 수 있도록 “0x”를 앞에 붙여 주는 습관을 갖길 권합니다.
//X: 16진수
Console.WriteLine("0x{0:X}", iv);
Console.WriteLine("0x{0}", iv.ToString("X"));
실행 결과 0x3039 0x3039
다음은 실습에 사용한 전체 소스 코드입니다.
//https://ehpub.co.kr //002. 숫자 출력 - 형식 지정자 이용하기 using System; namespace 002숫자출력포멧 { class Program { static void Main(string[] args) { int iv = 12345; double dv = 12345.6789; double dv2 = 0.23; //D: 10 진수 Console.WriteLine("{0:D}", iv); Console.WriteLine(iv.ToString("D")); //E: 지수 Console.WriteLine("{0:E}",dv); Console.WriteLine(dv.ToString("E")); //F: 고정 소수점 Console.WriteLine("{0:F}", dv); Console.WriteLine(dv.ToString("F")); //G:일반 Console.WriteLine("{0:G}", dv); Console.WriteLine(dv.ToString("G")); Console.WriteLine("{0:G}", 0.0000023); //N:숫자 Console.WriteLine("{0:N}", 123456789); //P: 백분율 Console.WriteLine("{0:P}", dv2); Console.WriteLine(dv2.ToString("P")); //X: 16진수 Console.WriteLine("0x{0:X}", iv); Console.WriteLine("0x{0}", iv.ToString("X")); } } }