java.math.BigDecimal 클래스는 고정 소수점 및 부동 소수점 연산을 위한 정밀한 산술 연산을 제공하는 클래스입니다. 이 클래스는 부정확한 부동 소수점 연산에서 발생할 수 있는 문제를 피하기 위해 사용됩니다. BigDecimal 클래스는 불변(immutable)하며, 정확한 정밀도로 연산을 수행할 수 있습니다.
java.math.BigDecimal 클래스의 주요 메서드
1. add(BigDecimal augend) 및 subtract(BigDecimal subtrahend) 메서드
두 BigDecimal 객체를 더하거나 빼는 연산을 수행합니다.
BigDecimal num1 = new BigDecimal("123.456");
BigDecimal num2 = new BigDecimal("789.012");
BigDecimal sum = num1.add(num2);
BigDecimal difference = num1.subtract(num2);
2. multiply(BigDecimal multiplicand) 및 divide(BigDecimal divisor, RoundingMode roundingMode) 메서드
두 BigDecimal 객체를 곱하거나 나누는 연산을 수행합니다.
BigDecimal num1 = new BigDecimal("123.456");
BigDecimal num2 = new BigDecimal("789.012");
BigDecimal product = num1.multiply(num2);
BigDecimal quotient = num1.divide(num2, RoundingMode.HALF_UP); // 나눗셈에서 반올림
3. pow(int n) 메서드
BigDecimal 객체를 주어진 지수로 제곱합니다.
BigDecimal base = new BigDecimal("2.5");
int exponent = 3;
BigDecimal result = base.pow(exponent); // 2.5^3
4. compareTo(BigDecimal val) 메서드
두 BigDecimal 객체를 비교합니다. 0이면 같고, 양수면 크고, 음수면 작습니다.
BigDecimal num1 = new BigDecimal("123.456");
BigDecimal num2 = new BigDecimal("789.012");
int comparisonResult = num1.compareTo(num2);
5. equals(Object x) 메서드
두 BigDecimal 객체가 동일한 값을 가지면 true를 반환합니다.
BigDecimal num1 = new BigDecimal("123.456");
BigDecimal num2 = new BigDecimal("123.456");
boolean isEqual = num1.equals(num2);
6. toString() 메서드
BigDecimal 객체를 문자열로 변환합니다.
BigDecimal num = new BigDecimal("123.456");
String numAsString = num.toString();
7. setScale(int newScale, RoundingMode roundingMode) 메서드
BigDecimal 객체의 소수점 이하 자릿수를 조절하고 반올림을 수행합니다.
BigDecimal num = new BigDecimal("123.456789");
BigDecimal roundedNum = num.setScale(2, RoundingMode.HALF_UP); // 123.46
예제
import java.math.BigDecimal;
import java.math.RoundingMode;
public class BigDecimalExample {
public static void main(String[] args) {
BigDecimal num1 = new BigDecimal("123.456");
BigDecimal num2 = new BigDecimal("789.012");
// 덧셈과 뺄셈
BigDecimal sum = num1.add(num2);
BigDecimal difference = num1.subtract(num2);
// 곱셈과 나눗셈
BigDecimal product = num1.multiply(num2);
BigDecimal quotient = num1.divide(num2, RoundingMode.HALF_UP); // 나눗셈에서 반올림
// 제곱
BigDecimal base = new BigDecimal("2.5");
int exponent = 3;
BigDecimal result = base.pow(exponent);
// 비교
int comparisonResult = num1.compareTo(num2);
// 동일성 검사
BigDecimal num3 = new BigDecimal("123.456");
boolean isEqual = num1.equals(num3);
// 문자열로 변환
String num1AsString = num1.toString();
// 소수점 이하 자릿수 조절
BigDecimal num = new BigDecimal("123.456789");
BigDecimal roundedNum = num.setScale(2, RoundingMode.HALF_UP); // 123.46
}
}
BigDecimal 클래스는 정밀한 산술 연산이 필요한 금융 및 정밀한 계산과 같은 분야에서 유용하게 사용됩니다.
With ChatGPT
'JAVA > 포스팅' 카테고리의 다른 글
자바 Calendar (0) | 2023.11.16 |
---|---|
자바 날짜와 시간 (0) | 2023.11.16 |
자바 java.math.BigInteger클래스 (0) | 2023.11.16 |
자바 java.util.StringTokenizer클래스 (0) | 2023.11.16 |
자바 java.util.Scanner클래스 (0) | 2023.11.15 |