Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C/C++에서 float와 double의 차이점 완벽 정리

C/C++에서 float와 double의 차이점

C/C++에서 소수점을 가진 실수(floating point number)를 표현하려면 float 또는 double 자료형이 필요합니다. 두 자료형 모두 실수를 다룰 수 있지만, 제공하는 정밀도(precision)에서 중요한 차이를 보입니다.

간단히 말해, double은 float보다 약 2배 더 높은 정밀도를 가집니다. 즉, double은 배정밀도(double precision), float는 단정밀도(single precision) 방식으로 실수를 저장합니다.

비트 구성과 정밀도

double은 64비트로 실수를 표현합니다. 부호 1비트, 지수 11비트, 가수 52비트로 구성되며, 약 15자리의 십진수 정밀도를 제공합니다.

반면 float는 32비트로 실수를 표현합니다. 지수 8비트, 가수 23비트로 구성되며, 약 7자리의 십진수 정밀도를 제공합니다.

메모리 사용량

double이 float보다 정밀도가 높기 때문에, 당연하게도 double은 float의 두 배에 해당하는 메모리를 차지합니다. 따라서 메모리 사용량 역시 자료형 선택 시 고려해야 할 중요한 요소입니다.

표현 범위

두 자료형의 표현 범위는 다음과 같습니다.

  • float: 약 ±3.40282347E+38, 유효 숫자 6~7자리
  • double: 약 ±1.79769313486231570E+308, 유효 숫자 15~16자리

어떤 자료형을 선택해야 할까?

높은 정밀도가 필요하지 않고 대량의 실수 배열을 저장해야 하는 경우에는 float가 메모리를 절약할 수 있는 비용 효율적인 선택입니다. 반면, 과학 계산이나 금융 데이터 처리처럼 더 높은 정밀도가 요구되는 상황이라면 double을 사용하는 것이 바람직합니다.