본문 바로가기
Program Language/C#

Part1. C# 첫발 내딛기(10. 형식 지정자)

by 토담이아빠 2023. 1. 3.

형식 지정자

 

 

이번 포스팅에서는 Console.WriteLine()과 같은 문자열 출력함수에 사용하는 형식 지정자에 대해서 정리했습니다.


형식 지정자

 

형식 지정자는 크게 표준 형식 지정자커스텀 형식 지정자로 나눌 수 있습니다. 많이 사용하는 숫자 표준 형식 지정자는 N(Number), D(Decimal), C(Currency), F(Fixed Point), E(Sicentific)입니다. 이들 지정자는 숫자를 사용하여 정밀도를 표현합니다.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleFormat
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("{0:N2}", 1234.5678); //출력 : 1,234.57
            Console.WriteLine("{0:D8}", 1234);      //출력 : 00001234
            Console.WriteLine("{0:F3}", 1234.5678); //출력 : 1234.560
        }
    }
}

Fixed point의 경우 앞에서 살펴봤듯이 디폴트가 소수점 2자리입니다.  F3일 경우 소수점 3자리까지 표현되며 소수점 4자리에서 반올림됩니다. 이러한 형식 지정자는 Console.WriteLine()에서 뿐만 아니라 String.Format()과 ToString()에서도 똑같이 사용됩니다.

 

커스텀 형식지정자는 다음과 같은 기호를 사용하여 쉽게 포맷을 지정할 수  있습니다. 예를 들어 소수점 아래 두 자리까지만 표시하고 싶다면 {"#.##"}을 쓰면 됩니다. 세 자리마다 콤마 표시를 하고 소수점 두 자리까지 표시하고 싶다면 {"#,#.##"}로 쓰면 됩니다.


# : Digit placeholder(0이 앞에 붙지 않음)
0 : Zero placeholder(0이 앞에 붙음)
. : 소수점(Decimal point)
, : 천 자리(Thousands operator)
; : 섹션 구분 기호(Section separator)

섹션 구분 기호는 숫자를 표시할 때 양수, 음수, 0의 값을 세미콜론으로 구분하여 해당포맷으로 선택적으로 출력할 수 있습니다. 예를 들어 회계에서는 음수 123을 -123이 아니고 (123)으로 표시합니다. 이럴 때 "{#,##0;(#,##0);zero}" 포맷을 쓰면 음수는 괄호 안에 숫자로 0은 zero로 출력합니다.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleFormat
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("{0:#.##}", 1234.5678);
            Console.WriteLine("{0:0,0.00}", 1234.5678);
            Console.WriteLine("{0:#,#.##}", 1234.5674);
            Console.WriteLine("{0:000000.00}", 1234.5674);

            Console.WriteLine("{0:#,#.##;(#,#.##);zero}", 1234.567);
            Console.WriteLine("{0:#,#.##;(#,#.##);zero}", -1234.567);
            Console.WriteLine("{0:#,#.##;(#,#.##);zero}", 0);

            //아래는 결과값이 같음
            Console.WriteLine("{0:#,##0;(#,##0);zero}", 1234.567);
            Console.WriteLine("{0:#,##;(#,##0);zero}", 1234.567);
            Console.WriteLine("{0:#,#;(#,##0);zero}", 1234.567);
            Console.WriteLine("{0:#,#0;(#,##0);zero}", 1234.567);

            //#의 개수는 소수점 자릿수에만 관여한다.
            Console.WriteLine("{0:#####.#;(#,##0);zero}", 1234.567);
        }
    }
}

결과


[Review]

"초보자를 위한 C# 200제(2판)"  저자 / 강병익

댓글