이 기사의 예제에서는 Java에서 BigDecimal의 작업 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
double과 float는 충분히 정확하지 않기 때문에 상용 계산을 수행할 때는 BigDecimal을 사용해야 합니다. BigDecimal 객체는 다음과 같이 생성됩니다.
다음과 같이 코드를 복사하십시오. BigDecimal b = new BigDecimal("12.000001");
System.out.println(b);
출력 결과는 다음과 같습니다: 12.000001;
BigDecimal은 생성 시 String 및 double로 전달될 수 있지만 String을 사용하는 것이 가장 좋습니다. 이유는 다음 코드를 살펴보세요.
다음과 같이 코드를 복사하십시오. BigDecimal b = new BigDecimal("12.000001");
System.out.println(b);
BigDecimal c = new BigDecimal(12.01);
System.out.println(c);
실행 결과는 다음과 같습니다.
12.000001
12.0099999999999997868371792719699442386627197265625
double이 전달되면 정밀도가 손실되는 것을 볼 수 있습니다.
BigDecimal의 다른 작업은 다음과 같습니다.
코드를 복사하면 다음과 같습니다. //Addition
공개 정적 BigDecimal 추가(문자열 num1, 문자열 num2) {
BigDecimal bd1 = new BigDecimal(num1);
BigDecimal bd2 = new BigDecimal(num2);
bd1.add(bd2)를 반환합니다.
}
//빼기
공개 정적 BigDecimal 빼기(문자열 num1, 문자열 num2) {
BigDecimal bd1 = new BigDecimal(num1);
BigDecimal bd2 = new BigDecimal(num2);
bd1.subtract(bd2)를 반환합니다.
}
//곱셈
공개 정적 BigDecimal 곱셈(문자열 num1, 문자열 num2) {
BigDecimal bd1 = new BigDecimal(num1);
BigDecimal bd2 = new BigDecimal(num2);
bd1.multiply(bd2)를 반환합니다.
}
//분할
공개 정적 BigDecimal 나누기(문자열 num1, 문자열 num2, int i) {
BigDecimal bd1 = new BigDecimal(num1);
BigDecimal bd2 = new BigDecimal(num2);
// i는 유지할 자릿수, BigDecimal.ROUND_HALF_UP은 반올림 규칙을 나타냅니다.
return bd1.divide(bd2, i, BigDecimal.ROUND_HALF_DOWN);
}
세 번째 매개변수는 반올림 여부입니다.
ROUND_HALF_DOWN은 5가 발생하면 1이 입력되지 않음을 의미합니다. 즉, 1.5->1입니다.
ROUND_HALF_UP은 5가 나타나면 1이 입력된다는 의미입니다. 즉, 1.5->2입니다.
하지만 몇 가지 참고할 사항이 있습니다.
ROUND_HALF_DOWN을 사용하는 경우 다음과 같이 코드를 복사합니다. System.out.println(this.divide("67.75", "5",4));
System.out.println(this.divide("67.75", "5",1));
System.out.println("-------");
System.out.println(this.divide("67.751", "5",4));
System.out.println(this.divide("67.751", "5",1));
실행 결과는 다음과 같습니다.
13.5500
13.5
-------
13.5502
13.6
논리적으로 두 번째 결과는 13.5여야 합니다. 왜 13.6이 되었나요? 여러번 테스트를 해본 결과 이 반올림은 정밀도 숫자 뒤의 쉬프트를 기준으로 한 것이 아니라 5와 비교하는 것이 아니라 정밀도 숫자 뒤의 모든 데이터를 5와 비교한다는 것을 알게 되었습니다. 즉, 13.5500은 한 자리, 0.0500을 사용하여 5와 비교하고 13.5502는 한 자리까지 정확합니다. 그런 다음 0.0502를 사용하여 5와 비교합니다. 5보다 크므로 위쪽으로 닫힙니다.
이 글이 모든 사람의 Java 프로그래밍에 도움이 되기를 바랍니다.