실수형 - float, double
실수형의 범위와 정밀도
float : 1.4 * 10^-45 ~ 3.4 * 10^38, 7자리
double : 4.9 * 10^-324 ~ 1.8 * 10^308, 15자리
실수형에서 오버플로우가 발생시 변수값은 무한대(infinity)가 된다
실수형으로 표현할 수 없는 아주 작은 값을 언더플로우라고 하며 이 때 변수값은 0이 된다
실수형은 부호(S), 지수(E), 가수(M) 세 부분으로 구분
실수형은 정수형과 달리 오차가 발생할 수 있음(값의 범위 뿐만 아니라 정밀도가 중요)
%24.20f : 전체 24자리 중에서 20자리는 소수점 이하의 수를 출력
실수형의 저장형식
실수형의 값을 부동소수점수(floating-point)의 형태로 저장
부동소수점수는 부호(Sign), 지수(Exponent), 가수(Mantissa) 세 부분으로 이루어져 있음
float와 double의 표현형식
float : 1 + 8 + 23 = 32 (4 byte)
S(1) | E(8) | M(23)
double : 1 + 11 + 52 = 64 (8 byte)
S(1) | E(11) | M(52)
S : 부호(Sigh bit) : 0이면 양수, 1이면 음수
E : 지수(Exponent) : 부호있는 정수
지수의 범위는 -127 ~ 128(float), -1023 ~ 1024(double)
M : 가수(Mantissa) : 실제값을 저장하는 부분
10진수로 7자리(float), 15자리(double)의 정밀도로 저장 가능
정규화 : 2진수로 변환된 실수를 1.xxx * 2^n
Float.floatToIntBits() : float타입의 값을 int타입의 값으로 해석해서 반환
'Backend > Java' 카테고리의 다른 글
자바의 정석 정리(11) - 형변환 ② (0) | 2022.05.25 |
---|---|
자바의 정석 정리(10) - 형변환 ① (0) | 2022.05.24 |
자바의 정석 정리(8) - 정수형 (0) | 2022.05.22 |
자바의 정석 정리(7) - 아스키와 유니코드 (0) | 2022.05.20 |
자바의 정석 정리(6) - 기본형 타입 (0) | 2022.05.19 |