HOWTO · Csharp
C#에서 숫자 값·정수 문자열·지원되는 값을 int로 변환하기
C#에서 숫자 값은 (int) 캐스트로, 정수 문자열은 int.Parse()로, 변환이 지원되는 값은 Convert.ToInt32()로 int로 변환하는 방법을 알아봅니다. 분수, null, 잘못된 입력, 범위 초과를 처리하는 방식의 차이도 설명합니다.
이 페이지의 내용
C#에서는 입력에 맞는 변환 방법을 선택하세요. 숫자 값에는 (int) 캐스트를, 정수를 나타내는 문자열에는 int.Parse()를, 변환이 지원되는 값에는 Convert.ToInt32()를 사용합니다. 이 메서드들은 분수, null, 변환할 수 없는 입력을 처리하는 방식이 서로 다릅니다.
숫자 값을 (int) 캐스트로 int로 변환하기
값이 이미 숫자 형식이라면 숫자 캐스트를 바로 사용할 수 있습니다. 캐스트 식은 텍스트를 파싱하지 않고 값을 변환합니다. 부동 소수점 값이나 decimal 값을 int로 변환하면 소수 부분이 0을 향해 버려집니다. 따라서 42.9는 42가 되고 -42.9는 -42가 됩니다. 다음 예제는 숫자 값을 변환한 뒤 결과를 출력합니다.
using System;
class Program
{
static void Main()
{
double value = 42.9;
int result = (int)value;
Console.WriteLine(result);
}
}
42
캐스트는 호환되는 숫자 형식에 적용되며 "42"와 같은 문자열을 파싱하지는 않습니다. 부동 소수점 값이 int 범위를 벗어난 경우, 검사하지 않는 변환의 결과는 지정되지 않습니다. checked 컨텍스트에서는 범위를 벗어난 변환 시 OverflowException이 발생합니다. 오버플로를 보고해야 한다면 checked((int)value)를 사용하거나 변환 전에 범위를 확인하세요. 자세한 내용은 Microsoft의 캐스팅 및 형식 변환 가이드를 참조하세요.
int.Parse()로 정수 문자열 파싱하기
폼이나 구성 파일에서 읽은 텍스트처럼 입력이 정수를 담은 문자열일 때 int.Parse()를 사용하세요. 문자열이 허용되는 정수 형식에 맞으면 int를 반환합니다. 다음 예제는 문자열을 파싱하고 결과 숫자를 출력합니다.
using System;
class Program
{
static void Main()
{
string text = "42";
int result = int.Parse(text);
Console.WriteLine(result);
}
}
42
int.Parse()는 임의의 텍스트나 숫자 객체를 변환하지 않습니다. 문자열을 파싱하는 메서드입니다. 문자열이 null이면 ArgumentNullException이 발생하고, 정수 형식에 맞지 않는 텍스트에는 FormatException이, int 범위를 벗어나는 값에는 OverflowException이 발생합니다. 유효하지 않을 수 있는 사용자 입력에는 int.TryParse()를 사용하고, 파싱 실패로 작업이 중단되지 않도록 반환되는 Boolean 값을 처리하세요. 기본 파싱 규칙은 현재 culture를 사용합니다. 숫자 형식이 정해진 원본의 텍스트를 처리한다면 culture를 명시하세요.
Convert.ToInt32()로 변환이 지원되는 값을 int로 변환하기
Convert.ToInt32()는 정수, Boolean, 부동 소수점 수, decimal 값, 문자열 등 변환이 지원되는 기본 형식의 값을 입력으로 받을 때 유용합니다. 모든 형식을 변환할 수 있는 것은 아닙니다. 변환 가능 여부는 사용할 수 있는 오버로드와 IConvertible 구현에 따라 달라집니다. 문자열을 입력하면 정수 텍스트를 파싱합니다. 부동 소수점 수나 decimal 값을 입력하면 (int)의 버림과 달리 가장 가까운 정수로 반올림하며, 중간값은 짝수 쪽으로 반올림합니다.
using System;
class Program
{
static void Main()
{
double value = 42.5;
int result = Convert.ToInt32(value);
Console.WriteLine(result);
}
}
42
이 중간값은 중간값-짝수 반올림 규칙에 따라 42가 되고, 43.5는 44가 됩니다. Convert.ToInt32()는 null 참조에 대해 0을 반환하지만, 지원되지 않는 변환이나 잘못된 문자열, int 범위를 벗어나는 값은 예외를 일으킬 수 있습니다. 입력에 맞는 변환 규칙을 기준으로 선택하세요. 입력이 정수 텍스트라면 int.Parse()를, 숫자 값을 버림 처리하려면 캐스트를 사용하세요.