본문 바로가기

IT

[C#] 소수점이 있는 숫자는 float일까 double일까.


안녕하세요,

이번에는 아주 간단한 사실 하나만 확인하고 넘어가겠습니다.


소수점이 있는 숫자 뒤에 'f'(float0나 'd'(double)를 붙이지 않으면,

해당 숫자는 어떤 타입이 될까요?

정답은 C나 C++과 마찬가지로 double 타입입니다.



    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine((3.14).GetType());
        }
    }


위의 코드를 실행하면,

"System.Double"이라는 결과가 나옵니다.


그렇다면, float 변수에 아무 suffix가 없는 숫자를 넘기면 어떻게 될까요?



    class Program
    {
        static void Main(string[] args)
        {
            float f = 3.14;
            Console.WriteLine(f);
        }
    }


위의 코드를 실행하면 컴파일 에러가 발생합니다.

"double 형식의 리터럴을 암시적으로 'float' 형식으로 변환할 수 없습니다. 이 형식의 리터럴을 만들려면 'F' 접미사를 사용하세요."

위의 오류 메시지에서 제안한대로 숫자 뒤에 F를 붙이고 다시 컴파일 해보겠습니다.



    class Program
    {
        static void Main(string[] args)
        {
            float f = 3.14F;
            Console.WriteLine(f);
        }
    }


위의 코드는 정상적으로 컴파일이 되고,

콘솔에 3.14가 찍힙니다.


이상 간단한 사실을 확인해보았습니다.