Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Convert.ToDecimal(String, IFormatProvider) 메서드 사용법 총정리

C#에서 Convert.ToDecimal() 메서드는 숫자를 나타내는 문자열을 10진수(decimal) 값으로 변환하는 기능을 제공합니다. 특히 이 오버로드는 지정된 문화권(culture)별 형식 정보를 활용하기 때문에, 소수점 구분 기호나 천 단위 구분 기호가 문화권마다 다른 다국어 환경에서 매우 유용하게 사용됩니다.

메서드 시그니처

해당 메서드의 기본 문법은 다음과 같습니다.

public static decimal ToDecimal(string val, IFormatProvider provider);

매개변수 설명

  • val: 변환할 숫자가 포함된 문자열입니다.
  • provider: 문화권별 형식 정보(예: 소수점 기호, 그룹 구분 기호 등)를 제공하는 IFormatProvider 객체입니다. 일반적으로 CultureInfo 인스턴스를 전달합니다.

이 메서드는 변환에 성공하면 해당 문자열과 동등한 10진수 값을 반환합니다.

예제 코드

아래 예제는 en-US(영어-미국) 문화권 정보를 사용하여 문자열을 decimal 타입으로 변환하는 과정을 보여줍니다.

using System;
using System.Globalization;

public class Demo {
    public static void Main() {
        CultureInfo cultures = new CultureInfo("en-US");
        String val = "8787";

        Console.WriteLine("변환된 Decimal 값...");
        decimal res = Convert.ToDecimal(val, cultures);
        Console.Write("{0}", res);
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

변환된 Decimal 값...
8787

주의사항 및 발생 가능한 예외

Convert.ToDecimal(String, IFormatProvider) 메서드를 사용할 때는 다음 상황을 유의해야 합니다.

  • ArgumentNullException: 변환할 문자열(val)이 null인 경우 발생합니다.
  • FormatException: 문자열이 유효한 숫자 형식이 아니거나, 지정한 문화권의 형식 규칙에 맞지 않는 경우 발생합니다.
  • OverflowException: 문자열이 decimal 타입이 표현할 수 있는 범위를 초과하는 경우 발생합니다.

따라서 실무에서는 decimal.TryParse() 메서드를 함께 고려하여, 변환 실패 시 예외 대신 안전하게 처리하는 방식을 권장합니다. 또한 소수점 표기가 문화권에 따라 다르다는 점(예: 미국은 1,234.56, 독일은 1.234,56)을 항상 염두에 두면 국제화(i18n) 처리 시 오류를 줄일 수 있습니다.