float형과 double형

곤 Gone·2023년 10월 9일

'이론'나코토 지식

목록 보기
1/1

공통점

  • 모두 실수 값을 저장하기 위해 부호, 지수 부분, 소수 부분을 저장함.

차이점

  • 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 연산을 쓰는 게 일반적

profile
개발을 먼저 시작해서 기획을 하게 되었습니다. JAVA와 React, Node를 공부합니다

0개의 댓글