BigDecimal은 float와 double이 표현하는 범위보다 더 큰 범위의 숫자를 저장할 수 있습니다.
new BigDecimal("10000.12345") 처럼 생성자에 문자열로 된 숫자를 전달하여 BigDecimal를 생성 및 초기화.add(), multiply(), subtract(), divide(), remainder() 등의 함수를 이용하여 BigDecimal 끼리 연산을 할 수 있고, 결과는 BigDecimal로 리턴.import java.math.BigDecimal;
public class Example {
public static void main(String[] args) {
BigDecimal n1 = new BigDecimal("100000.12345");
BigDecimal n2 = new BigDecimal("10000");
System.out.println("n1 + n2 = " + n1.add(n2));
System.out.println("n1 - n2 = " + n1.subtract(n2));
System.out.println("n1 * n2 = " + n1.multiply(n2));
System.out.println("n1 / n2 = " + n1.divide(n2));
System.out.println("n1 % n2 = " + n1.remainder(n2));
}
}
n1 + n2 = 110000.12345
n1 - n2 = 90000.12345
n1 * n2 = 1000001234.500000
n1 / n2 = 10.000012345
n1 % n2 = 0.12345
BigDecimal는 아래와 같이 int, long, float, double, String 등의 기본 타입으로 변환할 수 있습니다.
import java.math.BigDecimal;
public class Example {
public static void main(String[] args) {
BigDecimal n = new BigDecimal("54321");
int i = n.intValue();
long l = n.longValue();
float f = n.floatValue();
double d = n.doubleValue();
String s = n.toString();
}
}
BigDecimal 객체끼리 크기 비교를 할 때 compareTo()를 사용할 수 있습니다.
n1.compareTo(n2)는 1, 0, -1을 리턴할 수 있으며 각각 아래와 같은 의미가 됩니다.
import java.math.BigDecimal;
public class Example {
public static void main(String[] args) {
BigDecimal n1 = new BigDecimal("100000.12345");
BigDecimal n2 = new BigDecimal("1000000.6789");
System.out.println("n1.compareTo(n2) = " + n1.compareTo(n2));
}
}
n1.compareTo(n2) = -1