[도서/자바의 신] 부록 #3 float와 double

2022. 12. 27. 20:32·Book/자바의 신
728x90

자바의 신

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 


부록 1,2는 JDK 설치와 이클립스 설치에 관한 내용으로 따로 포스팅하지 않는다.

 

float는 32비트 단일 정확도, double은 64비트 이중 정확도를 갖는 숫자이다. 

IEEE 754에서 정의한 소수점 숫자의 표준에는 비트 크기 외에도 다음과 같은 표준이 있다.

  • 양수와 음수
  • +0과 -0
  • 양수와 음수의 무한대(infinity)
  • 숫자가 아닌 값 (Not a Number, NaN)

NaN에는 0을 0으로 나누었을 때의 값이 포함되고 Float와 Double에 각각 Float.NaN, Double.NaN으로 선언되어 있다. 

 

s * m * 2^(e-N+1)

s는 부호를 나타내고, m은 1보다 크거나 같고, 2^N보다 작은 정수, e는 -(2^(K-1) -2) 보다 크거나 같고 , 2(K-1) -1보다 작거나 같은 수이다. 

N과 K는 타입에 따라 달라진다.

매개 변수 float float-extended-exponent double double-extended-exponent
N 24 24 53 53
K 8 >= 11 11 >=15
E max +127  >=+1023 +1023 >=+16383
E min -126 <=-1022 -1022 <=-16382

extended-exponent로 정의된 타입들은 보다 큰 숫자를 표현할 순 있지만 정확도가 떨어진다.

 

+0==-0의 결과는 true이다. 반면에 다른 연산은 음수와 양수를 구분해 1.0/0.0은 양의 무한대가 되고, 1.0/-0.0은 음의 무한대가 된다.

NaN의 경우 순서가 정해져 있지 않아 크기를 비교하는 연산을 할 경우 항상 결과가 false가 된다.

 

float와 double의 최대 최소값

타입 최소(Normal 값) 최소 최대
float 2^(-126) 2^(-149) 2-2^(-23) * 2^127
double 2^(-1022) 2^(-1074) 2-2^(-52) *2^1023

Normal값은 positive한 일반 값, 최소값은 0이 아닌 positive한 가장 작은 값을 의미한다.

 

자세한 사항은 Java Language Specification 및 IEEE 754 문서를 참조하길 바란다.

728x90

'Book > 자바의 신' 카테고리의 다른 글

[도서/자바의 신] #20 가장 많이 쓰는 패키지는 자바랭  (0) 2022.12.29
[도서/자바의 신] #19 이쯤에서 자바의 역사와 JVM에 대해서 알아보자  (0) 2022.12.29
[도서/자바의 신] #17 어노테이션이라는 것도 알아야 한다  (1) 2022.12.25
[도서/자바의 신] #16 클래스 안에 클래스가 들어갈 수도 있구나  (0) 2022.12.25
[도서/자바의 신] #15 String  (1) 2022.12.25
'Book/자바의 신' 카테고리의 다른 글
  • [도서/자바의 신] #20 가장 많이 쓰는 패키지는 자바랭
  • [도서/자바의 신] #19 이쯤에서 자바의 역사와 JVM에 대해서 알아보자
  • [도서/자바의 신] #17 어노테이션이라는 것도 알아야 한다
  • [도서/자바의 신] #16 클래스 안에 클래스가 들어갈 수도 있구나
yulee_to
yulee_to
  • yulee_to
    yulee
    yulee_to
  • 전체
    오늘
    어제
    • 전체 글 (144) N
      • CS (2)
        • OS (0)
        • DB (0)
        • Network (2)
      • Develop (21)
        • Spring (9)
        • Java (12)
        • Python (0)
        • Algorithm (0)
        • 기타 (0)
      • PS (39)
        • C++ (39)
        • Java (0)
      • TIL (37) N
      • Book (39)
        • 자바의 신 (32)
        • 스프링 입문을 위한 자바 객체 지향의 원리와 이해 (7)
      • ETC (4)
        • Blog (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    알고리즘
    boj
    객체지향
    aws
    멀티캠퍼스it부트캠프
    EC2
    GodOfJava
    클라우드 활용 네트워크 엔지니어 부트캠프
    에스넷시스템 부트캠프
    Java
    자바의 신
    자바
    부트캠프후기
    C++
    TiL
    스프링 입문
    스터디
    에스넷시스템
    1일1백준
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
yulee_to
[도서/자바의 신] 부록 #3 float와 double
상단으로

티스토리툴바