Section 12.5: 통화 (currency) 서식 지정하기

"c" (혹은 currency) 서식 지정자는 주어진 숫자를 통화량을 나타내는 문자열로 변환하여 준다.

string.Format("{0:c}", 112.236677) // $112.23 - 시스템에 설정된 기본 형식

소수점 아래 정밀도 (precision)

기본 값은 2 로 설정되어 있다. c1, c2, c3 과 같은 값들을 기술함으로써 정밀도를 조정할 수 있다.

string.Format("{0:C1}", 112.236677) //$112.2 string.Format("{0:C3}", 112.236677) //$112.237 string.Format("{0:C4}", 112.236677) //$112.2367 string.Format("{0:C9}", 112.236677) //$112.236677000

통화 기호 (currency symbol)

  1. 사용자 설정 문화권 기호를 사용하려면 CultureInfo 인스턴스를 인자로 넘긴다.
    string.Format(new CultureInfo("en-US"), "{0:c}", 112.236677); //$112.24 string.Format(new CultureInfo("de-DE"), "{0:c}", 112.236677); //112,24 € string.Format(new CultureInfo("hi-IN"), "{0:c}", 112.236677); //₹112.24
  2. 임의의 문자열을 통화 기호로 사용한다. NumberFormatInfo 를 사용하여 통화 기호를 원하는대로 변경할 수 있다.
    NumberFormatInfo nfi = new CultureInfo( "en-US", false ).NumberFormat; nfi = (NumberFormatInfo) nfi.Clone(); nfi.CurrencySymbol = "?"; string.Format(nfi, "{0:C}", 112.236677); //?112.24 nfi.CurrencySymbol = "?%^&"; string.Format(nfi, "{0:C}", 112.236677); //?%^&112.24

통화 기호의 위치

양수값에 대해서는 CurrencyPositivePattern 을, 음수값에 대해서는 CurrencyNegativePattern 을 사용한다.

NumberFormatInfo nfi = new CultureInfo( "en-US", false ).NumberFormat; nfi.CurrencyPositivePattern = 0; string.Format(nfi, "{0:C}", 112.236677); //$112.24 - default nfi.CurrencyPositivePattern = 1; string.Format(nfi, "{0:C}", 112.236677); //112.24$ nfi.CurrencyPositivePattern = 2; string.Format(nfi, "{0:C}", 112.236677); //$ 112.24 nfi.CurrencyPositivePattern = 3; string.Format(nfi, "{0:C}", 112.236677); //112.24 $

음수값에 대한 사용법 역시 양수값 예제인 위 예제와 유사하다. 더욱 많은 사용법을 위해서는 위에서 소개된 링크를 참조하도록 한다.

사용자 지정 소수점 구분자

NumberFormatInfo nfi = new CultureInfo( "en-US", false ).NumberFormat; nfi.CurrencyPositivePattern = 0; nfi.CurrencyDecimalSeparator = ".."; string.Format(nfi, "{0:C}", 112.236677); //$112..24
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

+ Recent posts