[실습으로 다지는 C#] 숫자 출력 – 형식 지정자 이용하기

 이번 실습에서는 형식 지정자를 이용하여 숫자를 출력하는 방법을 알아보기로 할게요.

 

 이미 이전 강의에서는 출력할 때 문자열 출력 포멧을 알아보았죠.

{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"));
         }
     }
 }