- float형
- 4바이트, 최대크기는 10의 38승, 최소크기 10의 -38승, 유효자리 6자리(24비트)
- 실수값 저장을 위해 32bit(부호 1bit, 지수 부분 8bit, 소수 부분 23bit)를 사용
- log(2^24)=7.x 공식에 따라 십진수 7자리 숫자를 정확히 표현 가능.
- double형
- 8바이트, 최대크기 10의 308승, 최소크기 10의 -308승, 유효자리 15자리(53비트)
- 실수값 저장을 위해 64bit(부호 1bit, 지수 부분 11bit, 소수 부분 52bit)를 사용
- log(2^53)=15.x 공식에 따라 십진수 15자리 숫자를 정확히 표현 가능.
float형 변수와 double형 변수는 지수 부분 bit 사이즈의 차이로 인해 저장할 수 있는 실수값의 범위가 달라짐.
- float 형의 지수 부분 8bit → -127~128 표현. 즉, 저장할 수 있는 값의 범위가 대략 -(2의 128승)~2의 128승
- double 형의 지수 부분 11bit → -1023~1023 표현. 즉, 저장할 수 있는 값의 범위가 대략 -(2의 1024승)~2의 1024승
float형 변수와 double형 변수의 소수 부분 bit 사이즈의 차이로 인해 정확히 표현할 수 있는 실수값의 자리수가 달라짐.
- float형 변수의 경우 생략된 정수 부분 1bit와 소수 부분 23bit로 비트 정밀도(bit precision)가 24bit.
- double형 변수의 경우 생략된 정수 부분 1bit와 소수 부분 52bit로 인해 비트 정밀도(bit precision)가 53bit.
무조건 정밀도가 중요하면 double 타입
속도가 중요하면 float 타입으로 SIMD 연산을 쓰는 게 일반적