>Java >java지도 시간 >Java의 반올림 오류

Java의 반올림 오류

WBOY
WBOY앞으로
2023-08-19 15:05:18696검색

Java의 반올림 오류

우리 모두는 코드를 작성하는 동안 오버플로 오류 및 구문 오류와 같은 오류를 발생시키는 다양한 실수를 합니다. 반올림 오류는 주어진 수학적 문제에 대해 잘못된 해결책을 초래할 수 있는 일반적인 오류 중 하나입니다. 부동 소수점 숫자로 작업할 때 오류가 발생합니다.

이 기사에서는 이 문제의 원인을 살펴보고 이 오류를 제거하는 방법을 찾으려고 노력할 것입니다.

반올림 오류

부동 소수점 유형

실수라고도 하며 계산에 분수 값이 필요할 때 사용됩니다. 소수점이 있는 숫자를 나타냅니다. 예를 들어 1/5의 결과인 0.2를 표현하려면 사인과 코사인의 결과에도 소수점이 필요합니다.

Java에는 두 가지 유형의 부동 소수점 숫자가 있습니다. -

  • 부동 소수점 - 최대 32비트의 단정밀도 값을 저장할 수 있습니다. 'float' 키워드를 사용하여 선언합니다.

  • Double − 크기가 float보다 크고 최대 64비트의 배정밀도 값을 저장할 수 있습니다. 'double' 키워드를 사용하여 선언됩니다.

반올림 오류가 발생할 수 있는 예를 살펴보고 이유를 이해하고 올바르게 처리할 수 있는 솔루션을 제공하겠습니다.

예 1

으아악

출력

으아악

위 코드에서 처음 추가했을 때 'data2'의 기대값은 0.30인데 출력 결과가 틀리네요. 그러나 또 다른 유사한 추가 작업을 수행하면 정확한 결과를 얻습니다.

오류가 나타나는 또 다른 예를 들어보겠습니다.

예 2

의 중국어 번역은 다음과 같습니다.

예 2

으아악

출력

으아악

예상 출력은 4.808062이지만 여기서는 잘못된 출력이 발생합니다.

오류 이유

'IEEE 754'는 부동 소수점 수를 구현할 때 Java에서 따르는 표준으로, '반올림' 규칙에 따라 가수의 값이 23비트보다 크면 23번째 비트에 1을 더하여 값을 반올림합니다. . 여기서 가수는 분수의 이진 표현입니다.

그래서 우리는 서로 다른 가치를 얻습니다.

오류 해결 방법

이 반올림 오류를 피하기 위해 다음과 같은 방법이 있습니다 -

  • BigDecimal − float 및 double과 같은 부동 소수점 숫자 대신 사용할 수 있는 클래스입니다. 예를 들어 산술 연산, 비교 및 ​​반올림과 같은 float 및 double 데이터 유형이 제공하는 모든 일반 연산을 수행할 수 있습니다. 이러한 작업을 정확한 정밀도로 처리할 수 있습니다.

다음 예에서는 이를 사용하여 정확한 결과를 생성하는 방법을 보여줍니다.

예 3

으아악

출력

으아악

예제 1에서는 두 값을 추가하는 중에 오류가 발생했습니다. 위 예에서는 동일한 값을 사용했지만 이번에는 올바른 결과를 얻었습니다.

  • Math.round() − 'Math' 클래스의 정적 메서드입니다. 부동 소수점 값을 인수로 사용하고 가장 가까운 정수 값을 반환합니다. 클래스 이름을 사용하여 이를 호출합니다.

아래 예는 프로그램에서의 사용을 보여줍니다.

예 4

으아악

출력

으아악

결론

반올림 오류는 컴파일 시간이나 런타임 오류가 아니며, Java 컴파일러가 이를 감지할 수 없습니다. 이것이 바로 프로그래머가 이러한 오류에 특별한 주의를 기울여야 하는 이유입니다. 그렇지 않으면 잘못된 결과가 나올 것입니다. 그 이유와 반올림 오류를 극복할 수 있는 몇 가지 방법도 제안했습니다.

위 내용은 Java의 반올림 오류의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제