>  기사  >  Java  >  Java 반올림 및 예약 비트 샘플 코드

Java 반올림 및 예약 비트 샘플 코드

黄舟
黄舟원래의
2017-08-22 09:56:471251검색

이 글은 Java에서 반올림 및 예약 비트의 예를 주로 소개합니다. 편집자는 이것이 꽤 좋다고 생각하므로 지금 공유하고 참고용으로 제공하겠습니다. 편집자를 따라가서 살펴보겠습니다

반올림은 우리 초등학교 수학 문제입니다. 우리 프로그래머들에게 이 문제는 1에서 10까지의 덧셈, 뺄셈, 곱셈, 나눗셈만큼 간단합니다. 설명하기 전에 다음과 같은 고전적인 사례를 먼저 살펴 보겠습니다. 4 라운딩 우리가 학교 모집에 참여할 때 자주 접하는 전형적인 사례(필기시험을 볼 때 여러 번 접한 것 같습니다). 여기 결과에서 우리는 이 두 숫자의 절대값이 동일한 것을 알 수 있는데, 대략적인 값은 왜 다른가요? 실제로 이는 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, .003, 0.002, 0.001입니다.


따라서 은행의 이익은 0.000 + 0.001 + 0.002 + 0.003 + 0.004 - 0.005 - 0.004 - 0.003 - 0.002 - 0.001 = -0.005가 되어야 합니다. 결과를 보면 은행이 10회 이자 지불마다 0.005위안을 잃을 수 있다는 것을 알 수 있습니다. 이 수치는 은행에 있어 매우 큰 손실입니다. 이러한 문제에 직면하여 다음과 같은 은행가 참여 방식이 탄생하였다. 이 알고리즘은 미국 은행가들이 제안한 것으로 위의 반올림 규칙으로 인해 발생하는 오류를 수정하는 데 주로 사용됩니다. 다음과 같습니다:


반올림 숫자의 값이 5 미만인 경우 직접 반올림됩니다.


반올림 숫자의 값이 5보다 큰 경우 반올림 후 반올림됩니다.


반올림 숫자의 값이 5일 때 5 이후에 0이 아닌 다른 값이 있으면 반올림하여 5 뒤에 0이 오면 패리티에 따라 판단됩니다. 5 이전의 숫자. 홀수 짝수를 전달하고 버립니다. 위의 규칙에 대해서는 예제 11.556 = 11.56 ------ 6 개의 항목을 제공합니다 .111.554 = 11.55 ----- 4 라운드 11.5551 = 11.56- -- - 5 이후의 숫자가 있으면 캐리


11.545 = 11.54 ----- 5 이후의 숫자는 무수히 많기 때문에 첫 번째 숫자가 짝수이면 버려야 합니다


11.555 = 11.56 -----첫 번째 숫자가 홀수인 경우 5 이후의 숫자는 무수히 많습니다.


다음 예에서는 은행원 반올림 방법을 사용합니다.


public static void main(String[] args) { 
    System.out.println("12.5的四舍五入值:" + Math.round(12.5)); 
    System.out.println("-12.5的四舍五入值:" + Math.round(-12.5)); 
  }

출력:

분기별 이자 is: 562.50
  • 뱅커의 반올림 방법은 위에서 간략하게 소개되었으며, 현재 Java는 7가지 반올림 방법을 지원합니다:

  • 1. ROUND_UP: 0에서 멀어지는 반올림. 폐기 비트가 0이 아닌 한 최대 절대값 쪽으로 반올림하여 전달됩니다.

  • 2. ROUND_DOWN: 0을 향해 반올림합니다. 절대값이 가장 작은 방향으로 입력하면 모든 비트가 버려지고 캐리가 발생하지 않습니다.
  • 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: 은행원의 반올림 방법.


반올림의 경우 예약된 비트가 필수적입니다. Java 작업에서는 예약된 비트를 구현하기 위해 다양한 방법을 사용할 수 있습니다.


예약된 비트


Method 1: Rounding


 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); 
    }

여기서 BigDecimal을 사용하고, 정확도를 설정하려면 setScale 메소드를 사용하고, RoundingMode.HALF_UP을 사용하여 가장 가까운 대략적인 계산을 위한 숫자 규칙. 여기서 BigDecimal과 반올림이 완벽하게 일치한다는 것을 알 수 있습니다.

방법 2:


double  f  =  111231.5585; 
BigDecimal  b  =  new  BigDecimal(f); 
double  f1  =  b.setScale(2,  RoundingMode.HALF_UP).doubleValue();

예:


#.00은 소수점 이하 두 자리를 나타냅니다. #.0000 소수점 이하 네 자리 등...


방법 3:

java.text.DecimalFormat  df  =new  java.text.DecimalFormat(”#.00″); 
df.format(你要格式化的数字);

%.2f %.는 소수점 이하의 모든 자릿수를 나타냅니다. 2는 소수점 이하 두 자리 이후의 결과를 나타냅니다.

방법 4:


또한 출력에 struts 태그를 사용하는 경우 format="0.00"으로 설정하면 소수점 두 자리를 유지한다는 의미입니다

例如: 


<bean:write name="entity" property="dkhAFSumPl" format="0.00" /> 
//或者 
<fmt:formatNumber type="number" value="${10000.22/100}" maxFractionDigits="0"/>

maxFractionDigits表示保留的位数 

위 내용은 Java 반올림 및 예약 비트 샘플 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.