반응형
BigDecimal 사용 이유
Java에서 double의 경우 이진수를 가지고 근사값을 처리하기 때문에 실수계산 시 오류가 발생할 수 있다.
특히나 돈과 관련된 금융권에서는 double 사용을 지양하고 객체타입이라 번거럽지만 BigDecimal을 사용하는 것을 권장한다.
Java 뿐만 아니라 다른언어 그리고 DB에서도 BigDecimal 자료형을 제공하니 실수 계산에 사용하도록 하자.
BigDecimal 사용방법
BigDecimal a = new BigDecimal("214");
BigDecimal b = new BigDecimal("0.031");
System.out.println("BigDecimal : " + a + " int : " + b);
//BigDecimal : 214 int : 0.031
BigDecimal a = new BigDecimal("214");
BigDecimal b = new BigDecimal("2");
System.out.println("a + b : " + a.add(b));
System.out.println("a - b : " + a.subtract(b));
System.out.println("a * b : " + a.multiply(b));
System.out.println("a / b : " + a.divide(b));
// a + b : 216
// a - b : 212
// a * b : 428
// a / b : 107
BigDecimal a = new BigDecimal("214");
BigDecimal b = new BigDecimal("3");
System.out.println("a / b : " + a.divide(b));
//Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
System.out.println("a / b : " + a.divide(b,RoundingMode.HALF_EVEN));
//71
System.out.println("a / b : " + a.divide(b,6,RoundingMode.HALF_EVEN));
//71.333333
반응형