- java.math 패키지
-보통은 int 정도의 기본 자료형으로 원하는 정수의 표현이 가능하다
하지만 상황에 따라서는 정수 자료형 중에서 가장 표현 범위가 넓은 long형으로도
표현 불가능한 수를 표현해야 할 때가 있다.
자바에서는 이런 경우를 대비해 BigInteger 클래스를 제공하고 있다
- 정수형을 확장시켜주는 BigInteger 클래스
long이 제법 큰 범위의 정수를 표현하고 있지만 한계가 있다
★ BigInteger는 말 그대로 큰 정수를 표현하는 클래스다.
이 클래스는 내부적으로 int[]에 값 저장
반드시 String 타입에 저장하라!!!
=> 자릿수 부족으로 인한 문제 해결
★실수형을 확장시켜주는 BigDecimal 클래스
=> 자릿수 부족 또는 연산에서의 부정확성 문제를 해결
- 내부적으로 배열을 사용하여 수치데이터를 분리해서 저장하므로
수치 데이터 자릿수에 제한이 없다(정수 = int[], 실수 = char[])
- 생성자에 문자열 형태의 수치데이터를 전달하여 데이터 생성
- 사칙연산 등의 모든 연산은 메서드를 호출하여 수행
BigInteger bi = new BigInteger("123456789012345678901234567890");
long 타입 범위를 초과하는 정수 사용 불가하다
long l = 123456789012345678901234567890L;
하지만 BingInterger를 사용하면 long 타입 범위를 초과하는 아주 큰 정수 처리도 가능하다
BigInteger 객체를 생성하면 long 타입 범위를 초과하는 아주 큰 정수 처리도 가능
BigInteger bi = new BigInteger("123456789012345678901234567890");
System.out.println("BigInteger 정수 : " + bi);
toString() 메서드 오버라이딩 되어있음
-정수를 키울 수 있다
- int [ ]에 값을 저장
- 연산자가 아닌 메서드를 이용
사칙연산(+,-,*,/)을 한다
add()
subtract()
multiply()
divide()
remainder() _음수 나와도 그대로 사용
mod() _음수면 오류
메서드 사용해 기본 사칙 연산
각 메서드를 호출하여 BingInteger 타입 피라미터를 피연산자로 사용
나머지 연산의 경우 2가지 메서드로 나누어지면 둘 다 나눗셈 결과의 나머지를 리턴하지만
mod() 메서드의 경우 결과값이 음수일 때, ArithmeticException 예외를 발생시킴
실수 연산 과정에서 유효 자릿수에 대한 표현 문제로
연산 결과가 올바른 값이 아닐 수 있다
특히(.1에 대한 문제가 주로 발생)
따라서 실수끼리의 연산은 BingDecimal 클래스를 사용하는 것이 안전하다
기본 데이터 타입 중 정수형으로 변환 처리도 가능하지만 역시 자릿수 문제가 발생한다
주의!!! 반드시 생성자에 문자열 타입으로 실수 데이터를 전달해야 문제가 없다
ㅣ읽느라 수고 많으셨어요~ㅣ
부족한 글을 읽어주셔서 감사드립니다
아직 부족한 게 많으니
틀린 곳이 있다면
조언의 말씀 꼭 부탁드립니다!!!!
[java]자바_은행 계좌개설 인스턴스 생성/ 클래스 정의/멤버 변수/ 리턴/메소드 정의및 호출/실제예제공부 (0) | 2020.08.07 |
---|---|
[자바] java Random 클래스(난수 발생)쉽게 정리/ 주사위/랜덤 숫자뽑기/랜덤 범위설정 number공식 (0) | 2020.08.05 |
[자바] 배열 문제_array in java (0) | 2020.08.03 |
[java] 자바_StringBuilder & StringBuffer클래스 쉽게 정리 /String과 차이점 비교/빌더패턴(Builder Pattern) (0) | 2020.08.02 |
자바_String 클래스 /문자열 함수 메서드/불변, 상속/문자열 검색,분리,추출 (0) | 2020.07.30 |