본문으로 바로가기

BigDecimal

category Programming/Java 2020. 8. 19. 11:22
    반응형

    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
    반응형