열정 실천

[JAVA] Int, Double 범위를 벗어나면 BigInteger로 처리하자!!! 본문

개발 공부/JAVA

[JAVA] Int, Double 범위를 벗어나면 BigInteger로 처리하자!!!

구운오니 2022. 7. 6. 00:57

백준 1247 [부호] 문제를 풀면서 범위를 벗어나는 정수를 어떻게 처리할지 많은 고민을 했다ㅠㅠ

저번에 친구가 BigInteger 라는 타입을 쓰길래 그런게 있어? 했던 기억이 떠올라 검색해봤고

이걸로 풀 수 있겠다! 생각하고 코드를 쓰기 시작했다. 

BigInteger로 선언하고 int, double, float 같은 기본 타입이랑 동일한 방법으로 사용하면 될 줄 알았지만 

아니었다....!! BigInteger 클래스형 객체를 생성해서 객체의 멤버함수를 사용해야 한다. 

 

[BigInterger 형 선언하기]

BigInteger a = new BigInteger("100000000000000000");

BigInteger b = new BigInteger("1");

특징 : 생성자 매개변수로 String 값이 들어간다.

 

[BigInteger 형 연산]

연산 종류 기본 타입 BigInteger
덧셈 a+b a.add(b)
뺄셈 a-b a.subtract(b)
곱셈 a*b a.multiply(b)
나눗셈 a/b a.divide(b)0
나머지 연산 a%b a.mod(b)
음수  -1*a a.negate()

[BigInteger 형 Math]

종류 기본 타입  BigInteger
절댓값 Math.abs(a) a.abs()
최대공약수   a.gcd(b)
a의 n승 a.pow(n) a.pow(int n)

[BigInteger 형 비교]

종류 기본 타입 BigInteger
최소 Math.min(a,b) a.min(b)
최대 Math.max(a,b) a.max(b)
양수&음수   a.signum
비교 a<b a.compareTo(b)     -1리턴
a==b a.compareTo(b)      0리턴
a>b a.compareTo(b)      1리턴

[BigInteger 형 변환]

기본타입 BigInteger
double double c = a.doubleValue()
float float c = a.floatValue()
int int c = a.intValue()
long long c = a.longValue()
String String c = a.toString()