자바 향상 편 - 자바 의 반올림 과 보존 위치

반올림 은 우리 초등학교 의 수학 문제 로 이 문 제 는 우리 프로그램 원숭이 에 게 1 에서 10 의 가감 곱 하기 와 비슷 하 다.설명 사이 에 우 리 는 먼저 다음 과 같은 전형 적 인 사례 를 본다.
public static void main(String[] args) {
        System.out.println("12.5      :" + Math.round(12.5));
        System.out.println("-12.5      :" + Math.round(-12.5));
    }
Output:
12.5      :13
-12.5      :-12

      이것 은 반올림 의 전형 적 인 사례 이자 우리 가 학교 모집 에 참가 할 때 자주 만 나 는 것 이다.이 결과 에서 우 리 는 이 두 절대 치가 같은 숫자 를 발 견 했 는데, 왜 근사치 가 다 를 까?사실 이것 은 Math. round 가 채택 한 반올림 규칙 과 결정 된다.
      반올림 은 사실 금융 방면 에서 매우 많이 운용 되 는데, 특히 은행 의 이자 가 그렇다.우 리 는 모두 은행 의 이윤 창 출 경 로 는 주로 금 리 차 라 는 것 을 알 고 있다. 그것 은 예금주 에 게 서 자금 을 수집 한 다음 에 대출 을 해 주 는 것 이다. 그 동안 발생 하 는 금 리 차 는 바로 은행 이 얻 은 이윤 이다.만약 에 우리 가 평소에 반올림 하 는 규칙 을 채택 한다 면 여 기 는 10 건의 예금 이자 계산 을 모델 로 한다. 다음 과 같다.
      사사: 0.000, 0.001, 0.002, 0.003, 0.004.이 집 들 은 모두 은행 에서 번 돈 이다.
      5 입: 0.005, 0.006, 0.007, 0.008, 0.009.이것들 은 모두 은행 이 손 해 를 본 돈 으로 각각 0.005, 0.004, 0.03, 0.002, 0.001 이다.
      그래서 은행 에 있어 서 그의 이윤 은 0.000 + 0.001 + 0.002 + 0.003 + 0.004 - 0.005 - 0.003 - 0.002 - 0.001 = - 0.0005 가 되 어야 한다.결과 에서 알 수 있 듯 이 10 건 당 이자 은행 은 0.005 위안 의 손실 을 볼 수 있 으 니 절대 이 숫자 를 얕 보지 마라. 이것 은 은행 에 있어 서 매우 큰 손실 이다.이 문제 에 직면 하여 다음 과 같은 은행 가 섭외 법 이 생 겼 다.이 알고리즘 은 미국 은행 가 들 이 제기 한 것 으로 주로 위의 반올림 규칙 을 사용 하여 발생 하 는 오 차 를 수정 하 는 데 쓰 인 다.다음 과 같다.
      버 리 는 위치의 수치 가 5 보다 적 으 면 바로 버린다.
      버 리 는 위치의 수치 가 5 보다 크 면 들 어간 후에 버린다.
      버 리 는 자리 의 수치 가 5 와 같 을 때 5 뒤에 0 이 아 닌 수치 가 있 으 면 들 어간 후에 버 리 고 5 뒤에 0 이 있 으 면 5 앞 자리 의 패 리 티 에 따라 홀수 가 들 어가 고 짝수 가 떨어진다 고 판단 한다.
      위의 규칙 에 대해 우 리 는 예 를 들 어 설명 한다.
         11.556 = 11.56 --- 6 입
         11. 554 = 11. 55 --- 4 사
         5 후 유수 진
         11.545 = 11.54 - 5 후 무수, 앞 자리 가 짝수 라면 버 려 야 한다
         11.555 = 11.56 - 5 후 무수, 만약 전위 가 홀수 라면 반드시 진입 해 야 한다
      다음 실례 는 은행 가 반올림 법 을 사용 하 는 것 이다.
public static void main(String[] args) {
        BigDecimal d = new BigDecimal(100000);      //  
        BigDecimal r = new BigDecimal(0.001875*3);   //  
        BigDecimal i = d.multiply(r).setScale(2,RoundingMode.HALF_EVEN);     //        
        
        System.out.println("    :"+i);
        }
Output:
    :562.50

      위 에서 은행 가 반올림 법 을 간단하게 소개 하 였 으 며, 현재 자바 는 7 중 반올림 법 을 지원 합 니 다.
         1、 ROUND_UP: 0 방향 에서 벗 어 나 반올림.절대 값 이 가장 큰 방향 으로 반올림 하고 자 리 를 버 리 면 0 이 아니면 바로 들 어 갑 니 다.
         2、 ROUND_DOWN: 제로 방향 으로 반올림.절대 값 이 가장 작은 방향 으로 입력 하면 모든 위 치 를 버 리 고 진 위 는 존재 하지 않 습 니 다.
         3、 ROUND_CEILING: 무한 한 방향 으로 반올림.정 최대 방향 으로 접근 하 다.정수 라면 반올림 행 위 는 ROUND 와 유사 합 니 다.UP, 마이너스 라면 반올림 행 위 는 ROUND 와 유사 합 니 다.DOWN。Math. round () 방법 은 이 모드 를 사용 합 니 다.
         4、 ROUND_FLOOR: 마이너스 무한 방향 으로 반올림.마이너스 무한 방향 으로 접근 하 다.정수 라면 반올림 행 위 는 ROUND 와 유사 합 니 다.DOWN;마이너스 라면 반올림 행 위 는 ROUND 와 유사 합 니 다.UP。
         5、 HALF_UP: 최근 숫자 반올림 (5 진).이것 은 우리 의 가장 전형 적 인 반올림 이다.
         6、 HALF_DOWN: 요즘 숫자 반올림 (5 사).여기 서 5 는 버 려 야 한다.
         7、 HAIL_EVEN: 은행 가 반올림 법.
      반올림 하면 보존 위치 가 없어 서 는 안 됩 니 다. 자바 연산 에서 우 리 는 여러 가지 방식 으로 보존 위 치 를 실현 할 수 있 습 니 다.
     
      보존 비트
      방법 1: 반올림
double   f   =   111231.5585;
BigDecimal   b   =   new   BigDecimal(f);
double   f1   =   b.setScale(2,   RoundingMode.HALF_UP).doubleValue();

      여기에 BigDecimal 을 사용 하고 setScale 방법 으로 정확 도 를 설정 하 며 RoundingMode. HALF 를 사용 합 니 다.UP 는 최근 의 숫자 반올림 법칙 을 사용 하여 근사치 계산 을 한다 고 밝 혔 다.여기 서 빅 디 밀 과 반올림 이 절묘 한 조합 임 을 알 수 있다.
      방식 2:
java.text.DecimalFormat   df   =new   java.text.DecimalFormat(”#.00″);
df.format(        );

      예: new java. text. DecimalFormat ("\ #.00 〃). format (3.1415926)
      #.00 은 두 개의 소 수 를 나타 낸다.
      방식 3:
double d = 3.1415926;

String result = String .format(”%.2f”);

%.2f %.               2               f      。

      방식 4:
      또한 struts 탭 을 사용 하여 출력 하면 format 속성 이 있 습 니 다. format = "0.00" 으로 설정 하면 두 개의 소 수 를 유지 합 니 다.
      예 를 들 면:
<bean:write name="entity" property="dkhAFSumPl"  format="0.00" />

  

<fmt:formatNumber type="number" value="${10000.22/100}" maxFractionDigits="0"/>

maxFractionDigits       

좋은 웹페이지 즐겨찾기