숫자 서식 문자열

이전 섹션에서 문자열 자리 표시자의 두 가지 활용 방식을 배웠습니다. 사실 이 두 가지 방법 외에도 C#은 더욱 복잡한 서식 규칙을 지원합니다.

기본 서식 자리 표시자 문법

{인덱스,정렬옵션:서식코드}
1、index(인덱스)

인덱스 / 보간 변수, 필수 입력값

기존 숫자형 자리 표시자:Console.WriteLine(“{0}”, 123); 코드는 {0} 위치에 숫자 123을 삽입합니다

문자열 보간 구문 $"":숫자 인덱스 없이 변수명을 직접 적을 수 있습니다. 예시 Console.WriteLine($”Tom is {age} years old”)

예시 코드

int money = 1000;
Console.WriteLine("원본 값:{0}", money);
Console.WriteLine("통화 서식:{0:C}", money);
Console.WriteLine("10자리 오른쪽 정렬 통화:|{0,10:C}|", money);Code language: JavaScript (javascript)
원본 값:1000
통화 서식:$1,000.00
10자리 오른쪽 정렬 통화:| $1,000.00|

보간 문법으로 작성한 동일 코드

int money = 500;
Console.WriteLine($"원본 값:{money}");
Console.WriteLine($"통화 서식:{money:C}");
Console.WriteLine($"10자리 오른쪽 정렬 통화:|{money,10:C}|");Code language: JavaScript (javascript)
2、alignment(정렬 옵션)

정렬 지정자, 선택 사항, 쉼표 ,로 구분해서 작성

기능:출력 최소 문자 너비와 좌우 정렬 방식을 제어

예시:Console.WriteLine(“{0,10}”, 123); // 총 10문자 너비를 차지하며 숫자는 오른쪽 정렬됨

출력 결과를 보면 123 왼쪽에 공백이 많이 생깁니다. 숫자 10은 총 10자리를 의미하며, 123 앞에 공백 7개를 채워 오른쪽 정렬하는 원리입니다.

양수:오른쪽 정렬, 너비가 부족하면 왼쪽에 공백 채움 예시:{0,10} → 10문자 너비, 숫자 오른쪽 정렬

음수:왼쪽 정렬, 너비가 부족하면 오른쪽에 공백 채움 예시:{0,-10} → 10문자 너비, 숫자 왼쪽 정렬

코드를 아래처럼 수정해서 확인해보겠습니다

Console.WriteLine("{0,-10}", 123);  // 10문자 너비를 사용하고 음수이므로 숫자가 왼쪽 정렬됨Code language: JavaScript (javascript)

공백 구분이 어려우므로 양옆에 세로 막대를 붙여 차이를 명확히 확인합니다

Console.WriteLine("|{0,-10}|", 123);
Console.WriteLine("|{0,10}|", 456);Code language: JavaScript (javascript)

양옆 세로선을 추가하면 정렬 규칙이 한눈에 파악됩니다. 10은 고정 10자 너비이고 음수는 왼쪽 정렬, 양수는 오른쪽 정렬이며 남은 자리는 공백으로 채워집니다.

문자열 보간으로 작성한 동일 기능 코드는 다음과 같습니다

int one = 123;
int two = 456;
Console.WriteLine($"|{one,-10}|");
Console.WriteLine($"|{two,-10}|");Code language: JavaScript (javascript)
3、format(서식 코드)

서식 필드, 선택 사항, 콜론 :으로 앞 부분과 구분

숫자 출력 형식을 제어:통화, 소수점, 과학적 표기법, 16진수 등

서식 필드 구조 :Axx

  • : 자리 표시자에 바로 붙여 써야 하며 공백을 넣으면 안 됨
  • A:단일 문자 서식 지정자(총 9가지 내장 표준 서식, 일부 대소문자 구분)
  • xx:정밀도 지정자(선택 가능, 1~2자리 숫자, 의미는 서식 문자에 따라 달라짐)
// F4:고정 소수점 서식, 소수점 4자리 유지
Console.WriteLine("{0:F4}", 12.345678);

// 문자열 보간으로 작성한 동일 코드
Console.WriteLine($"{12.345678:F4}");Code language: JavaScript (javascript)

추가 예시를 더 살펴보겠습니다

double myDouble = 12.345678;
Console.WriteLine("{0,-10:G} -- 일반 서식", myDouble);      // 12.345678 -- 일반 서식
Console.WriteLine("{0,-10} -- 기본 서식", myDouble);         // 12.345678 -- 기본 서식
Console.WriteLine("{0,-10:F4} -- 고정 소수점", myDouble);   // 12.3457  -- 고정 소수점
Console.WriteLine("{0,-10:C} -- 통화", myDouble);     // $12.35    -- 통화
Console.WriteLine("{0,-10:E3} -- 과학 표기법", myDouble);//1.235E+001 -- 과학 표기법
Console.WriteLine("{0,-10:x} -- 16진 정수", 1194719);   // 123adf    -- 16진 정수Code language: JavaScript (javascript)

9가지 표준 숫자 서식 지정자 대응표

식별자이름기능정밀도 의미출력 예시
C/cCurrency 통화현지 통화 기호 표시소수점 자릿수{0:C} 12.5 → $12.50
D/dDecimal 십진 정수int 타입 전용, 부족한 자릿수 앞에 0 채움최소 표시 자릿수{0:D4} 12 → 0012
F/fFixed-point 고정 소수점소수점 자릿수 고정유지할 소수점 자릿수{0:F4} 12.345678 →12.3457
G/gGeneral 일반 서식고정 소수/과학 표기 자동 전환, 기본 서식유효 숫자 자릿수{0:G4} 12.345678 →12.35
X/xHexadecimal 16진수(대소문자 구분)16진수 출력, X 대문자/x 소문자최소 표시 자릿수{0:x} 180026 → 2bf3a
N/nNumber 자릿수 구분 숫자3자리마다 구분 기호 삽입소수점 자릿수{0:N2} 12345678.54321 →12,345,678.54
P/pPercent 백분율값 ×100 후 % 기호 추가소수점 자릿수{0:P2} 0.1221897 →12.22 %
R/rRound-trip 왕복 서식서식 적용 후 정밀도 손실 없이 원본 숫자 복구 가능정밀도 무시{0:R} 1234.21897 →1234.21897
E/eScientific 과학 표기법(대소문자 구분)지수 표기 출력, E 대문자/e 소문자가수 부분 소수점 자릿수{0:e4}12.3456789 →1.2346e+001

숫자 서식 문자열

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다