VB.NET 금액에 천원 단위 콤마 넣는 신박한 방법

2024. 3. 12. 10:24VB.NET/왕초보

금액을 표기할때는 일반적으로 천원 단위로 콤마를 넣어서 표기하게 된다. 금액뿐만 아니라 숫자가 천단위보다 클 경우에는 가독성을 위해서 콤마를 사용하는게 여러모로 좋다.

 

오늘은 이를 위해 VB.NET에서 어떤 기능을 지원하는지 하나씩 차근차근 알아보기로 하자.

간략한 예제를 위해 아래 두개의 변수를 선언하자.

Dim Val1 As Long = 100000, Val2 As Long = 30000000

 

Val1은 십만, Val2는 삼천만을 넣었다. 이 예제에서 구하는 최종 결과는 "Val1 = 100,000, Val2 = 30,000,000"로 아래 3가지 방법 모두 동일한 결과를 도출하게 된다.

1. String.Format()

Dim Format1 As String = String.Format("Val1 = {0:#,##0}, Val2 = {1:#,##0}", Val1, Val2)

 

String.Format은 아래 방법들을 알아내기 전까지 가장 보편적으로 사용되는 방법이었다. 여기서의 핵심은 {0:#,##0} 이 부분인데, 앞에 0 은 콤마 뒤의 첫번째 변수를 의미하고, 뒤에 #,##0 이 숫자에 천단위로 콤마를 찍어주는걸 의미한다. 숫자 포맷을 사용하지 않으려면 그냥 {0} 이라고 쓰면 된다.

 

다음의 {1:#,##0} 에서 앞에 1 은 콤마 뒤의 두번째 파라미터를 의미한다.

반응형

2. ToString()

Dim Format2 As String = $"Val1 = {Val1.ToString("#,##0")}, Val2 = {Val2.ToString("#,##0")}"

 

위 1번과는 조금 다른 형식으로 String.Format 대신에 $ 연산자로 문자열을 문자열 안에 변수를 직접 넣었다. $ 연산자에 대해서는 아래 문자열 관련 강좌를 참조하자.

 

VB.NET 문자열 연산, 문자열과 숫자 합치기 쉬운 방법

VB.NET에서 문자열과 변수를 섞어서 사용하는 아주 특이한 문법이 있는데 오늘은 이걸 소개해보도록 하자. 우선 str1과 str2의 2개의 문자열 변수를 합치는 간단한 소스로 구성된 아래 예제를 보자.

chakhani.tistory.com

여기서는 나름 특이하게 ToString()이 문자열의 형식을 지정할 수 있다. 일반적으로는 ToString()으로 문자열이 아닌 변수를 문자열로 변환해주는데, 변환하는김에 아예 포맷을 지정해서 변환이 가능하도록 만들었으니, 정말 많이 생각하고 만든 함수라는걸 알 수 있는 대목이다.

3. 보간

Dim Format3 As String = $"Val1 = {Val1:#,##0}, Val2 = {Val2:#,##0}"

 

오늘 강좌의 핵심이 여기에 있는데, 자세히 보면 위 1번과 2번을 교묘하게 섞어서 사용한 것처럼 보인다. $ 로 문자열을 만들었으며, {Val1:#,##0} 부분에서, 아예 변수 자체에 직접 포맷을 지정해줄 수 있게 되었다. VB.NET에서 문자열을 다루다보면 그 편리함에 자꾸만 $ 연산자를 사용하고 있는 자신을 발견하게 될 것이다.

마치며...

숫자에 천원 단위 콤마를 넣는 방법은 위의 방법들 외에도 CultureInfo, NumericFormatInfo 등 다양한 방법이 있지만, 결국 위의 3번 방법을 가장 많이 사용하게 된다. 숫자에 콤마를 넣는 기능은 실 생활에서 아주 많이 사용되는 기능이니 이번 기회에 확실히 숙지하고 넘어가도록 하자.

반응형