C# Convert 클래스 소개
C#의 Convert 클래스는 하나의 기본 데이터 형식(base data type)을 다른 기본 데이터 형식으로 변환할 수 있는 다양한 정적 메서드를 제공합니다. 이 글에서는 실무에서 자주 사용되는 세 가지 메서드인 ToBoolean(), ToDouble(), ToDecimal()의 구문과 실제 사용 예제를 살펴보겠습니다.
1. Convert.ToBoolean() 메서드
Convert.ToBoolean() 메서드는 지정된 값을 그에 상응하는 부울(Boolean) 값으로 변환합니다.
구문
public static bool ToBoolean (string val, IFormatProvider provider);
위 구문에서 val은 TrueString("True") 또는 FalseString("False") 값을 담고 있는 문자열이며, provider는 문화권별(culture-specific) 서식 정보를 제공하는 개체입니다.
참고: 유효하지 않은 문자열을 전달하면 FormatException이 발생하며, null을 전달하면 false가 반환됩니다.
예제
using System;
using System.Globalization;
public class Demo {
public static void Main(){
CultureInfo cultures = new CultureInfo("en-US");
String str = "true";
Console.WriteLine("변환된 bool 값...");
bool res = Convert.ToBoolean(str, cultures);
Console.Write("{0}", res);
}
}
실행 결과
변환된 bool 값... True
2. Convert.ToDouble() 메서드
Convert.ToDouble() 메서드는 지정된 숫자의 문자열 표현을, 지정한 문화권별 서식 정보를 적용하여 배정밀도 부동 소수점 숫자(double)로 변환합니다.
구문
public static double ToDouble (string val, IFormatProvider provider);
위 구문에서 val은 변환할 숫자가 포함된 문자열이며, provider는 문화권별 서식 정보를 제공하는 개체입니다.
예제
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("변환된 Decimal 값...");
double res = Convert.ToDouble(val, formatProvider);
Console.Write("{0}", res);
}
}
실행 결과
변환된 Decimal 값... 876876.878
위 예제에서는 NumberFormatInfo 개체를 직접 구성하여 소수 구분 기호와 그룹(자릿수) 구분 기호를 커스터마이징했습니다. 이처럼 문화권 및 서식 설정에 따라 동일한 문자열이라도 해석 결과가 달라질 수 있으므로 주의해야 합니다.
3. Convert.ToDecimal() 메서드
Convert.ToDecimal() 메서드는 지정된 숫자의 문자열 표현을, 지정한 문화권별 서식 정보를 적용하여 그에 상응하는 decimal 숫자로 변환합니다. 금융 계산처럼 높은 정밀도가 필요한 경우에는 double 대신 decimal 형식을 사용하는 것이 권장됩니다.
구문
public static decimal ToDecimal (string val, IFormatProvider provider);
위 구문에서 val은 변환할 숫자가 포함된 문자열이며, provider는 문화권별 서식 정보를 제공하는 개체입니다.
예제
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 클래스의 형 변환 메서드들은 문자열로 입력받은 데이터를 원하는 숫자 형식으로 안전하게 변환할 때 매우 유용합니다. 특히 다국어 환경의 애플리케이션을 개발할 때는 IFormatProvider를 통해 문화권별 서식을 명시적으로 지정해 주는 것이 예기치 않은 파싱 오류를 방지하는 좋은 습관입니다.