본문 바로가기
Program Language/C#

Part1. C# 첫발 내딛기(13. 문자열과 숫자의 변환)

by 토담이아빠 2023. 1. 8.

문자열과 숫자의 변환

 

이번 포스팅은 문자열을 입력받아 숫자로 바꾸는 방법에 대해서 정리했습니다.


문자열과 숫자의 변환

 

문자열을 숫자로 바꾸는 방법은 두 가지가 있습니다. 하나는 숫자 형식(int, float, double 등)에 있는 Parse()나 TryParse() 메서드를 사용하는 것이고 또 다른 하나는 Convert 클래스의 메서드를 사용하는 것입니다.

 

Parse()와 TryParse() 두 메소드 모두 문자열 앞뒤에 있는 공백은 무시합니다. 다른 모든 문자들은 int, double, decimal 등의 숫자형식에 맞는 문자들이어야 합니다. 문자열 중간에 공백이 있으면 에러가 발생합니다. 예를 들어 decimal.TryParse()를 사용할 때 "10", "10.5"등은 가능하지만 형식에 맞지 않는 "10e2"(float에서 가능)나 "1 0"과 같은 문자열은 에러가 납니다.

 

문자열이 숫자를 나타내지 않는 경우에는 Parse()는 에러가 발생하고 TryParse()는 false를 리턴합니다. 다음 예제는 Parse()와 Tryparse()의 사용법을 보여줍니다.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StringToNumber
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string input;
            int value;

            Console.Write("1. int로 변환할 문자열을 입력하세요: ");
            input = Console.ReadLine();
            bool result = Int32.TryParse(input, out value);

            if (!result)
                Console.WriteLine("'{0}'는 int로 변환될 수 없습니다.\n", input);
            else
                Console.WriteLine("int '{0}'으로 변환되었습니다.\n", value);

            Console.Write("2. double로 변환할 문자열을 입력하세요: ");
            input = Console.ReadLine();
            try
            {
                double m = Double.Parse(input);
                // double m = Convert.ToDouble(input);
                Console.WriteLine("double '{0}'으로 변환되었습니다.\n", m);
            }
            catch (FormatException e)
            {
                Console.WriteLine(e.Message);
            }

        }
    }
}

TryParse()는 두가지 반환 값을 가집니다. 변환의 성공여부를 알려주는 result 값과 변환 결과인 value값입니다. value 앞에 붙은 out  키워드는 value 변수를 참조로 전달해 결과값을 받겠다는 뜻입니다.

 

try ~ catch문은 예외가 발생했을 때 처리하는 문장입니다. TryParse()는 리턴값으로 true와 false를 전달하기 때문에 예외 상황에 따른 처리가 가능하지만 Parse()는 변환 결과만 받기 때문에 에러가 나면 프로그램이 그대로 종료됩니다. try 블록에서 에러가 발생하면 catch블록에서 어떤 에러인지 정보를 제공하고 처리할 수 있도록 해줍니다.


결과


Convert 클래스의 메소드들은 Parse()와 똑같이 동작합니다. Double.Parse() 부분을 Convert.ToDouble()로 바꾸면 똑같이 동작합니다.


double m = Convert.ToDouble(input);

결과


[Review]

"초보자를 위한 C# 200제(2판)"  저자 / 강병익

댓글