본문 바로가기
개발자 양성과정 필기노트/JAVA

BigInteger / BigDecimal

by jono 2021. 11. 13.

    I.BigInteger    


# 개념

1. Long타입보다 큰 정수를 다룬다

2. 자동변환을 지원하지 않음 -> 생성자로 정수데이터를 문자열형으로 전달해야한다.

 - Wrapper 클래스 타입은 오토박싱/언박싱을 지원하지만 BigInteger타입은 No

 

# 기본데이터타입으로 변환하기

- ___Value() 메서드를 사용함

- 오버플로우 발생 가능성 있음.

 

# 연산

- 일반산술연산자 사용이 불가능

- 반드시 연산메서드로 연산을 수행해야한다.

  • add() - +
  • subtract() - -
  • multiply() - *
  • divide() - /
  • remainder() - %
  • mod - 주의! 두번째 피연산자가 음수인 경우 예외발생함.

    II. BigDecimal    


# 개념

- 실수의 표현방식으로 인하여 정확도가 떨어지는 문제를 해결하기 위하여 사용한다.

- 생성자에서 문자열형으로 값을 전달하는 것을 추천함

 

# 연산

- 기본산술연산자 사용 불가능. 연산 메서드 사용해야함.

 

# 참고

- 기본데이터타입의 데이터를 BigDecimal의 생성자에 전달하는 경우 이상한 값이 되므로 주의.

double d3 = 1.1;
BigDecimal bc3 = new BigDecimal(d3);
System.out.println(bc3);//1.100000000000000088817841970012523233890533447265625

 

- 기본데이터타입의 데이터를 -> 문자열형으로 변환하여 -> BigDecimal의 생성자에 전달하면 Ok

double d3 = 1.1;

//1.
BigDecimal bc3_1 = new BigDecimal(String.valueOf(d3));

//2.
BigDecimal bc3_2 = new BigDecimal(Double.toString(d3));

//3.
BigDecimal bc3_3 = new BigDecimal(d3+"");// => 널스트링과 결합

'개발자 양성과정 필기노트 > JAVA' 카테고리의 다른 글

사용자 정의 예외  (0) 2021.11.13
데이터 형식화 클래스  (0) 2021.11.13
Enum  (0) 2021.11.13
JFrame 이벤트처리하는 5가지 방법  (0) 2021.11.02
Date, Calendar 클래스 / Time패키지  (0) 2021.10.10

댓글