전공/객체지향프로그래밍
Java, BigDecimal
공부하려구요
2023. 8. 11. 17:03
728x90
반응형
BigDecimal
- BigDecimal은 Java 언어에서 숫자를 정밀하게 연산할 수 있는 방법이다.
- Java에서 돈과 소수점을 다룬다면 BigDecimal을 사용한다.
public class BigDecimalExample {
public static void main(String[] args) {
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");
BigDecimal result = a.add(b);
System.out.println("0.1 + 0.2 = " + result);
}
BigDecimal 초기화 방법
- double 타입으로부터 BigDecimal을 초기화할 때는 문자열의 형태로 초기화 함
double doubleValue = 0.1;
BigDecimal decimalValue = new BigDecimal(String.valueOf(doubleValue));
BigDecimal의 사칙 연산
BigDecimal a = new BigDecimal("10");
BigDecimal b = new BigDecimal("3");
a.add(b); // 더하기
a.subtract(b); // 빼기
a.multiply(b); // 곱하기
a.divide(b, 3, RoundingMode.HALF_EVEN); // 나누기
a.remainder(b, MathContext.DECIMAL128); //나머지
new BigDecimal("-3").abs(); // 절대값
a.min(b); // 두 수 중 최소값
a.max(b); // 두 수 중 최대값
BigDecimal 비교 연산
- BigDecimal은 == 연산을 사용할 수 없다
- equals(), compareTo()을 사용함
BigDecimal a = new BigDecimal("2.01");
BigDecimal b = new BigDecimal("2.010");
a == b; // false
// 값의 비교를 위해 사용, 소수점 맨 끝의 0까지 완전히 값이 동일해야 true 반환
a.equals(b); // false
// 값의 비교를 위해 사용, 소수점 맨 끝의 0을 무시하고 값이 동일하면 0, 적으면 -1, 많으면 1을 반환
a.compareTo(b); // 0
BigDecimal 소수점 처리
- 소수점 이하를 절사하기 (RoundingMode.FLOOR)
- 소수점 이하를 절사하고 1을 증가시키기 (RoundingMode.CEILING)
- 소수점 자리수에서 오른쪽의 0 부분을 제거한 겂을 반환 (strip TrailingZeros)
- 반올림 (RoundingMode.HALF_EVEN)
new BigDecimal("1.1234567890").setScale(0, RoundingMode.FLOOR); // 소수점 이하를 절사한다.
// 1
// 2
new BigDecimal("1.1234567890").setScale(0, RoundingMode.CEILING); // 소수점 이하를 절사하고 1을 증가시킨다.
// 음수에서는 소수점 이하만 절사한다.
// 2
new BigDecimal("-1.1234567890").setScale(0, RoundingMode.CEILING); // 음수에서는 소수점 이하만 절사한다.
// -1
new BigDecimal("0.99990").stripTrailingZeros(); // 소수점 자리수에서 오른쪽의 0 부분을 제거한 값을 반환한다.
// 0.9999
new BigDecimal("0.1234").setScale(0, RoundingMode.HALF_EVEN); // 소수점을 남기지 않고 반올림한다.
// 0
new BigDecimal("0.9876").setScale(0, RoundingMode.HALF_EVEN);
// 1
728x90
반응형