[C#] 문자를 숫자형식으로 변환

in #csharp7 years ago

문자형 변수를 숫자형으로 변환에는 2가지의 방법이 있습니다.

  1. 해당 타입의 Parse() 메소드 사용
  2. Convert 클래스 사용

우선 예제를 보겠습니다.


string s1 = "1234";
string s2 = "1234.65";
string s3 = null;
string s4 = "123456789123456789123456789123456789123456789";

int result;
bool success;

result = Int32.Parse(s1); //-- 1234 
result = Int32.Parse(s2); //-- FormatException 
result = Int32.Parse(s3); //-- ArgumentNullException 
result = Int32.Parse(s4); //-- OverflowException 

result = Convert.ToInt32(s1); //-- 1234 
result = Convert.ToInt32(s2); //-- FormatException 
result = Convert.ToInt32(s3); //-- 0 
result = Convert.ToInt32(s4); //-- OverflowException 

success = Int32.TryParse(s1, out result); //-- success => true; result => 1234 
success = Int32.TryParse(s2, out result); //-- success => false; result => 0 
success = Int32.TryParse(s3, out result); //-- success => false; result => 0 
success = Int32.TryParse(s4, out result); //-- success => false; result => 0 


  • 변경하려는 타입의 Parse() 메소드를 이용하면 변환이 가능합니다.
    여기에서 Int16, int32(int), int64 의 타입이 있는데 이것들의 차이는 값의 범위 입니다. Int64가 가장큰 범위를 가지고 있습니다.

  • 타입.Parse()는 string 값만 변환을 하지만 Convert클래스는 뒤의 메소드를 무엇을 쓰는지에 따라서 다양한 변환을 처리가 가능합니다. 또한 파라미터로 string만 받는것이 아니라 object나 bool등의 다양한 입력을 받아서 변환이 가능합니다.

  • 또 한가지 중요한 차이점은 Convert를 사용하면 null값을 입력받아도 오류가 발생하지 않습니다.

  • 타입의 TryParse()를 이용하면 변환의 성공여부와 결과를 입력 파라미터에 저장합니다.

  • 입력이 고정(항상 문자) 되어 있는 곳에서는 필요하지 않겠지만, 사용자의 입력을 받는 곳에서는 TryParse로 미리 판단해서 오류가 없게 처리해야합니다.

  • 반대로 숫자를 문자로 변경하려면 해당 타입에서 .Tostring()으로 변경이 가능합니다.

Sort:  

Congratulations @devhongjinhyeon! You received a personal award!

1 Year on Steemit

Click here to view your Board

Do not miss the last post from @steemitboard:

SteemWhales has officially moved to SteemitBoard Ranking
SteemitBoard - Witness Update

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @devhongjinhyeon! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!