상세 컨텐츠

본문 제목

[java] 자바_ BigInteger & BigDecimal 클래스 원리 쉽게 정리/범위/기본 int형/반복문/사칙연산 메소드

java_자바

by 쫑메이 2020. 8. 4. 00:00

본문

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 


[자바 이론] BigInteger & BigDecimal 클래스


 

 

- java.math 패키지

 

-보통은 int 정도의 기본 자료형으로 원하는 정수의 표현이 가능하다

하지만 상황에 따라서는 정수 자료형 중에서 가장 표현 범위가 넓은 long형으로도

표현 불가능한 수를 표현해야 할 때가 있다.

 

자바에서는 이런 경우를 대비해 BigInteger 클래스를 제공하고 있다

 

 

 

 

 

 

 

 


[자바 이론] BigInteger 클래스_특징


 

 

- 정수형을 확장시켜주는 BigInteger 클래스

 

long이 제법 큰 범위의 정수를 표현하고 있지만 한계가 있다

 

★ BigInteger는 말 그대로 큰 정수를 표현하는 클래스다.

이 클래스는 내부적으로 int[]에 값 저장

반드시 String 타입에 저장하라!!!

=> 자릿수 부족으로 인한 문제 해결

 

 

 

 

 

 

 

 

 

 

 


[자바 이론] BigDecimal 클래스_특징


 

 

★실수형을 확장시켜주는 BigDecimal 클래스

=> 자릿수 부족 또는 연산에서의 부정확성 문제를 해결

 

- 내부적으로 배열을 사용하여 수치데이터를 분리해서 저장하므로

수치 데이터 자릿수에 제한이 없다(정수 = int[], 실수 = char[])

 

- 생성자에 문자열 형태의 수치데이터를 전달하여 데이터 생성

 

- 사칙연산 등의 모든 연산은 메서드를 호출하여 수행

 

 

 

 

 

 

 

 

 


[자바 이론] BigInteger 클래스_

아주 큰 정수 처리 가능


 

 

 

BigInteger bi = new BigInteger("123456789012345678901234567890");

 

 

long 타입 범위를 초과하는 정수 사용 불가하다

long l = 123456789012345678901234567890L;

 

 

 

 

 

하지만 BingInterger를 사용하면 long 타입 범위를 초과하는 아주 큰 정수 처리도 가능하다

 

BigInteger 객체를 생성하면 long 타입 범위를 초과하는 아주 큰 정수 처리도 가능

 

BigInteger bi = new BigInteger("123456789012345678901234567890");

System.out.println("BigInteger 정수 : " + bi);

toString() 메서드 오버라이딩 되어있음

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


[자바 이론] BigInteger 클래스_ 키워드 정리


 

-정수를 키울 수 있다

- int [ ]에 값을 저장

- 연산자가 아닌 메서드를 이용

사칙연산(+,-,*,/)을 한다

add()

subtract()

multiply()

divide()

remainder() _음수 나와도 그대로 사용

mod() _음수면 오류

 

 

 

 

 

 

 

 

 

 


[자바 이론] BigInteger 메서드


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


[자바 이론] BigInteger 클래스_

사칙연산(메서드 이용)


 

 

메서드 사용해 기본 사칙 연산

각 메서드를 호출하여 BingInteger 타입 피라미터를 피연산자로 사용

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


[자바 이론] BigInteger 클래스_

사칙연산: reminder


 

 

 

 

나머지 연산의 경우 2가지 메서드로 나누어지면 둘 다 나눗셈 결과의 나머지를 리턴하지만

mod() 메서드의 경우 결과값이 음수일 때, ArithmeticException 예외를 발생시킴

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


[자바 이론] BigInteger 클래스_

실수 연산 때 주의사항


 

 

 

 

실수 연산 과정에서 유효 자릿수에 대한 표현 문제로

연산 결과가 올바른 값이 아닐 수 있다

특히(.1에 대한 문제가 주로 발생)

 

 

 

 

 

 

 

 

 

 

 

 

 

따라서 실수끼리의 연산은 BingDecimal 클래스를 사용하는 것이 안전하다

기본 데이터 타입 중 정수형으로 변환 처리도 가능하지만 역시 자릿수 문제가 발생한다

주의!!! 반드시 생성자에 문자열 타입으로 실수 데이터를 전달해야 문제가 없다

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

ㅣ읽느라 수고 많으셨어요~ㅣ

 

 

 

 


 

 

 

 

 

 


 

 

부족한 글을 읽어주셔서 감사드립니다

아직 부족한 게 많으니

틀린 곳이 있다면

조언의 말씀 꼭 부탁드립니다!!!!

 

 

 

 


 

 

 


 

 

반응형

관련글 더보기