C#에서 실수 리터럴을 float 타입 변수에 저장하려면 숫자 뒤에 소문자 f 접미사(suffix)를 붙여야 합니다. 이 접미사는 컴파일러에게 해당 리터럴이 double이 아닌 float 타입임을 알려주는 역할을 합니다.
왜 f 접미사가 필요한가?
C#에서 소수점이 있는 숫자 리터럴은 기본적으로 double 타입으로 해석됩니다. 그런데 double에서 float로의 암시적 변환은 정밀도 손실이 발생할 수 있기 때문에 컴파일러가 이를 허용하지 않습니다.
따라서 다음과 같은 코드는 컴파일 오류를 발생시킵니다.
float val = 30.22; // 오류: double을 float로 암시적 변환 불가
하지만 f 접미사를 붙이면 리터럴 자체가 float 타입으로 인식되어 문제없이 컴파일됩니다.
올바른 사용 예제
using System.IO;
using System;
public class Program {
public static void Main() {
// f 접미사를 붙여 float 리터럴로 선언
float val = 30.22f;
Console.WriteLine(val);
}
}출력 결과
30.22
참고 사항
- 대문자 F를 사용해도 동일하게 작동합니다. 예:
30.22F - 정수 리터럴에는
l(long),u(uint),m(decimal) 등의 접미사도 존재합니다. - 반대로
double타입에는 별도의 접미사 없이 그대로 사용할 수 있으며, 명시적으로 표현하고 싶다면d또는D를 붙일 수 있습니다.
이처럼 f 접미사는 C#의 강력한 타입 시스템에서 타입 불일치로 인한 컴파일 오류를 방지하고, 개발자의 의도를 명확하게 전달하는 중요한 문법 요소입니다.