BigDecimal 4칙 연산 및 정밀도 계산

8887 단어 필기java 기초
문서 목록
  • 1, 4칙 연산
  • 2. 정밀도 계산
  • 사칙 연산
        //       
        @Test
        public void test1() {
            BigDecimal num1 = new BigDecimal(4);
            BigDecimal num2 = new BigDecimal(2);
    
            //     add
            BigDecimal resultAdd = num1.add(num2);
            //     subtract
            BigDecimal resultSubtract = num1.subtract(num2);
            //     multiply
            BigDecimal resultMultiply = num1.multiply(num2);
            //     divide
            BigDecimal resultDivide = num1.divide(num2);
    
            System.out.println("    :" + resultAdd);
            System.out.println("    :" + resultSubtract);
            System.out.println("    :" + resultMultiply);
            System.out.println("    :" + resultDivide);
        }
    

    결과:
        :6
        :2
        :8
        :2
    

    2. 정밀도 계산
        //     
        @Test
        public void test2() {
            BigDecimal num1 = new BigDecimal(1);
            BigDecimal num2 = new BigDecimal(3);
    
            try {
                BigDecimal resultDivide = num1.divide(num2).setScale(2, BigDecimal.ROUND_HALF_UP);
                System.out.println("    :" + resultDivide);
            } catch (Exception e) {
                System.out.println("  :" + e.getMessage());
            }
    
            BigDecimal resultDivide = num1.divide(num2, 2, BigDecimal.ROUND_HALF_UP);
            System.out.println("    :" + resultDivide);
        }
    

    결과:
      :Non-terminating decimal expansion; no exact representable decimal result.
        :0.33
    

    위에서 보듯이 진도를 잃어버릴 때 이상이 발생할 수 있다. 연산할 때 진도 연산을 하는 것은 문제가 없다. 여기는 정밀도 계산 방식을 사용해야 한다. 여기BigDecimal.ROUND_HALF_UP는 반올림이다.
    기타 정밀도 방법:
    1、ROUND_UP
    상향 반올림 모드, 반올림 수가 얼마든지 상향 진위
    2、ROUND_DOWN
    아래로 반올림 모드, 반올림 수가 얼마든지 상관없이
    3、ROUND_CEILING
    BigDecimal이 양수이면 반올림 동작과 ROUNDUP가 동일합니다.
    BigDecimal이 음수이면 반올림 동작과 ROUNDDOWN은 동일합니다.
    4、ROUND_FLOOR
    BigDecimal이 양수이면 반올림 동작과 ROUNDDOWN 동일
    BigDecimal이 음수이면 반올림 동작과 ROUNDUP가 동일합니다.
    5、ROUND_HALF_UP
    반올림 모드
    6、ROUND_HALF_DOWN
    반올림 모드
    7、ROUND_HALF_EVEN 은행가 반올림
    가장 가까운 숫자로 반올림하고 두 인접 숫자와 거리가 같으면 인접한 짝수로 반올림합니다.
    반올림 동작 및 ROUNDHALF_UP가 동일합니다.
    짝수인 경우 반올림 동작과 ROUNDHALF_DOWN은 동일합니다.
    일련의 계산을 반복할 때, 이 반올림 모드는 누적 오류를 최소화할 수 있음을 주의하십시오.
    이 반입 모델도'은행가 반입법'이라고 하는데 주로 미국에서 사용된다.반올림과 반올림 두 가지 상황.
    만약 앞자리가 홀수라면, 자리에 들어가고, 그렇지 않으면 버려라.
    다음 예는 소수점 1자리를 보존하는 것이다. 그러면 이런 반올림 방식의 결과다.
    1.15>1.2 1.25>1.2
    8、ROUND_UNNECESSARY
    단언은 요청한 조작이 정확한 결과를 가지고 있기 때문에 반올림할 필요가 없다.
    정확한 결과를 얻는 작업에 이 반올림 모드를 지정하면 Arithmetic Exception을 던집니다.

    좋은 웹페이지 즐겨찾기