Backend/JAVA / / 2021. 8. 23. 23:23

실수의 저장형식 - java

1.정밀도
float : 7자리 0.1234567xxxx (단정도 정밀도)
double : 15자리 0.123456789012345xxxxx... (배정도 정밀도)
3.14
3.141592 -> 더 정밀한 표현이다.

                        지수(E : 8) 가수(M : 23)
float [S][1][2][3] [4][5][6][7] [8][1][][] [][][][] [][][][] [][][][] [][][][] [][][][]
기저법(특정수) 127 + 3 == 130
                         지수(E : 11) 가수(M : 52)
double [S][1][2][3] [4][5][6][7] [8][9][10][11] [1][][][] [][][][] [][][][] [][][][] [][][][]
          [][][][] [][][][] [][][][] [][][][] [][][][] [][][][] [][][][] [][][][]

 

S 부호 : 0이면 양수, 1이면 음수

E 지수 : 부호있는 정수

M 가수 : 실제값을 저장하는 부분

 

2. 실수형의 저장형식

실수형은 값은 [부동소수점] 형태로 저장한다.

  └ +-M * 2^E 실수를 표현한 것

예) 10진소수 9.1234567 (유한소수)

     2진소수   9 -> 1001

                  0..1234567 -> 000111111001101011011011...

1001.000111111001101011011011... : 오차가 있는 값으로 저장됨. (2진수로는 무한소수)

정규화 : 소수점 위치가 다르기 때문에 고정 해주는 작업

 └ 1.XXX * 2^E

1.001000111111001101011011011... * 2^3
         가수 M                                   E

 

2진수로 표현했을때 무한 소수 & 자리수를 벗어나면 오차 범위가 생긴다.
BigDecimal (실무자는 오차 범위를 줄이기 위해 이 명령어 사용)

 

BigDecimal?

  • BigDecimal Java 언어에서 숫자를 정밀하게 저장하고 표현할 수 있는 유일한 방법이다.
  • 소수점을 저장할 수 있는 가장 크기가 큰 타입인 double은 소수점의 정밀도에 있어 한계가 있어 값이 유실될 수 있다.
  • Java 언어에서 돈과 소수점을 다룬다면 BigDecimal은 선택이 아니라 필수이다.
  • BigDecimal의 유일한 단점은 느린 속도와 기본 타입보다 조금 불편한 사용법 뿐이다.
반응형

'Backend > JAVA' 카테고리의 다른 글

래퍼 클래스(Wrapper Class) - java  (0) 2021.08.23
형 변환 - java  (0) 2021.08.23
정수형의 오버플로우 - java  (0) 2021.08.23
음수, 실수 진법 변환 - java  (0) 2021.08.23
210819 java 수업 - day2  (0) 2021.08.19
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유