JAVA/포스팅

자바 java.math.BigDecimal클래스

짜집퍼박사(짜박) 2023. 11. 16. 00:41

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