728x90
- 고정 소수점
- 특정 위치에 소수점을 고정하고 정수부와 소수부를 나눠 표현하는 방식
- 간편하고 계산이 빠르지만, 표현할 수 있는 범위가 굉장히 제한적임.
- 부동 소수점
- IEEE에서 표준으로 제한한 방식
- 부동(不動) 소수점이 아니라 부동(浮動) 소수점이다. 영어 "floating = 떠 있는" 을 해석한 것
- 표현할 수 있는 범위가 넓지만 연산속도가 다소 느리다.
- 부동 소수점의 표현 방식은 "(가수) X(밑수)(지수)" 형태로 표현한다.
- ex) 12.3 -> 123 x 10-1
- IEEE754에 정의된 것들
- 비트구조
- 부호비트 sign bit (1비트) : 0이면 양수, 1이면 음수
- 지수비트 exponent (8비트) : 10000111 127 + 8 = 135, 2 ^ (k - bias) 에서 k값을 나타냄.
- 가수비트 fraction (23비트) : 1.xyz의 형태로 표현한 가수. 왼쪽 부분부터 차례대로 채움
- 32비트 기준 : +-(1.가수부) * 2 ^ (지수부 - 127)
- 7.625 -> 111.101 -> 1.11101 * 2^2
- 지수부 127 + 2 -> 129가 들어감
- 가수부 111101 0000.....(23비트)가 들어감
- 비트구조
- 부동소수점 방식의 오차
- 2진수로 표현하기 때문에 오차가 존재하고, 담을 수 있는 최대값 이상을 담을 수 없다.
말 그대로 소수점이 고정되어있지 않고 떠다니는 방식
-
- 정확한 숫자계산을 위한 클래스
- java.math에 속하며 정확한 계산이 필요한 화폐단위를 다루는 프로그램에서 사용됨.
- 내부적으로 배열을 사용해서 수치데이터를 분리해서 저장하므로, 수치 데이터 자릿수에 제한이 없다.
- 생성자에 문자열 형태의 수치 데이터를 전달하여 데이터를 생성하는 것을 확인할 수 있다.BigDecimal은 왜 정확한가?
- 자바에서는 실수를 정확하게 표현하려는 시도중 하나 BigDecimal -> 각 자리수를 실수로 관리.
- Primitive 타입 대신에 Refrence 타입을 통해 각 자리수를 정확하게 저장할 수 있도록 함.
- BigInteger 클래스
'개발 > CS' 카테고리의 다른 글
컨텍스트 스위칭시 일어나는일 (0) | 2021.05.14 |
---|---|
C10K부터 Event-Driven까지 (1) | 2021.05.13 |
상속과 조합 (0) | 2021.05.08 |
Blocking Queue 블락킹 큐 (0) | 2021.04.26 |
스레드풀이란 (0) | 2021.04.15 |