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

C# Convert.ToDouble(String, IFormatProvider) 메서드 완벽 가이드

C#의 Convert.ToDouble() 메서드는 문자열로 표현된 숫자를 지정된 문화권(culture)별 서식 정보를 활용하여 배정밀도 부동 소수점 수(double)로 변환합니다. 특히 소수점 구분 기호나 자릿수 그룹화 방식이 언어·지역마다 다를 때, 이 메서드에 IFormatProvider를 전달하면 원하는 형식에 맞춰 정확하게 변환할 수 있습니다.

구문(Syntax)

Convert.ToDouble(String, IFormatProvider) 메서드의 기본 구문은 다음과 같습니다.

public static double ToDouble(string val, IFormatProvider provider);

매개변수 설명

  • val: 변환할 숫자가 담긴 문자열입니다.
  • provider: 문화권별 서식 정보를 제공하는 객체입니다. 주로 NumberFormatInfoCultureInfo 인스턴스를 사용합니다.

예제(Example)

다음 예제에서는 쉼표(,)를 소수점 구분 기호로, 마침표(.)를 자릿수 구분 기호로 사용하는 사용자 정의 서식을 적용해 문자열을 double 값으로 변환합니다.

using System;
using System.Globalization;

public class Demo {
    public static void Main(){
        String val = "876876, 878";
        NumberFormatInfo formatProvider = new NumberFormatInfo();
        formatProvider.NumberDecimalSeparator = ", ";
        formatProvider.NumberGroupSeparator = ".";
        formatProvider.NumberGroupSizes = new int[] { 2 };
        Console.WriteLine("Converted Decimal value...");
        double res = Convert.ToDouble(val, formatProvider);
        Console.Write("{0}", res);
    }
}

실행 결과(Output)

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

Converted Decimal value...
876876.878

핵심 포인트 정리

  • 기본 변환은 시스템의 현재 문화권 설정을 따르므로, 국제화 환경에서는 반드시 명시적인 IFormatProvider를 지정하는 것이 안전합니다.
  • NumberFormatInfo를 직접 구성하면 소수점 구분 기호(NumberDecimalSeparator), 자릿수 구분 기호(NumberGroupSeparator), 그룹화 크기(NumberGroupSizes)를 자유롭게 설정할 수 있습니다.
  • 변환에 실패하면 FormatException, null 문자열이 전달되면 0을 반환하며 잘못된 범위일 경우 OverflowException이 발생할 수 있으므로 예외 처리를 함께 고려하는 것이 좋습니다.