반응형
우선 수를 다루는 Data Type을 알아보면
Data Type | Size | Description |
byte | 1 byte | Stores whole numbers from -128 to 127 |
short | 2 bytes | Stores whole numbers from -32,768 to 32,767 |
int | 4 bytes | Stores whole numbers from -2,147,483,648 to 2,147,483,647 |
long | 8 bytes | Stores whole numbers from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 |
float | 4 bytes | Stores fractional numbers. Sufficient for storing 6 to 7 decimal digits |
double | 8 bytes | Stores fractional numbers. Sufficient for storing 15 decimal digits |
boolean | 1 bit | Stores true or false values |
char | 2 bytes | Stores a single character/letter or ASCII values |
가장 큰 long 타입도 9,223,372,036,854,775,807 까지의 숫자만 저장이 가능하다.
이보다 더 큰 숫자를 저장하는 방법이 BingInteger 이다.
초기화
BigInteger bigInt1 = new BigInteger("0");
java스럽게 평범하게 선언하여 사용하면 된다.
여기서 중요한 점은 BigInteger는 String 타입의 변수이다.
숫자라고 생각하여 정수형 타입으로 넣으면 안 된다.
계산
숫자는 당연히 계산이 되어야 한다.
BigInteger bigInt1 = new BigInteger("5");
BigInteger bigInt2 = new BigInteger("2");
System.out.println("덧셈(+) :" +bigInt1.add(bigInt2));
System.out.println("뺄셈(-) :" +bigInt1.subtract(bigInt2));
System.out.println("곱셈(*) :" +bigInt1.multiply(bigInt2));
System.out.println("나눗셈(/) :" +bigInt1.divide(bigInt2));
System.out.println("나머지(%) :" +bigInt1.remainder(bigInt2));
덧셈(+) :7
뺄셈(-) :3
곱셈(*) :10
나눗셈(/) :2
나머지(%) :1
형 변환
BigInteger bigInt1 = BigInteger.valueOf(5); //int -> BigIntger
int int_bigInt1 = bigInt1.intValue(); //BigIntger -> int
long long_bigInt1 = bigInt1.longValue(); //BigIntger -> long
float float_bigInt1 = bigInt1.floatValue(); //BigIntger -> float
double double_bigInt1 = bigInt1.doubleValue(); //BigIntger -> double
String String_bigInt1 = bigInt1.toString(); //BigIntger -> String
BigInteger의 양수, 음수, 0 확인
bigInt1.signum()
signum() 을 사용하면 해당 변수가 양수인지, 음수인지, 0인지 확인 후 리턴하여 준다.
https://www.acmicpc.net/problem/1247
위 문제의 정답 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for(int i=0; i<3; i++) {
BigInteger sum = new BigInteger("0");
int n = Integer.parseInt(br.readLine());
for(int j=0; j<n; j++) {
BigInteger param = new BigInteger(br.readLine());
sum = sum.add(param);
}
if(sum.signum() == 1) {
System.out.println("+");
} else if(sum.signum() == -1) {
System.out.println("-");
} else {
System.out.println("0");
}
}
}
}
반응형
'Language > Java' 카테고리의 다른 글
[Java] AES-256 암호화/복호화 하기 (0) | 2023.06.15 |
---|---|
[Java] 트리 구현하기 (이진트리, 전위순회, 중위순회, 후위순회) (0) | 2023.04.08 |
[Base64][암호화] + 기호가 " "(공백) 으로 바뀌는 현상 (0) | 2023.03.13 |
[Java] UnsuoortedClassVersionError 52.0 에러 해결 방법 (0) | 2022.12.11 |
[Java] 코드 실행 시간 구하기 (시간 측정) (2) | 2022.12.02 |
댓글