"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 정밀 손실을 설명하는 동안 부동 소수점 값을 어떻게 정확하게 비교할 수 있습니까?

정밀 손실을 설명하는 동안 부동 소수점 값을 어떻게 정확하게 비교할 수 있습니까?

2025-03-24에 게시되었습니다
검색:363

How Can Floating-Point Values Be Compared Accurately While Accounting for Precision Loss?

Epsilon 기반 비교

임계 값을 사용하여 정밀 손실을 고려하는 것과 관련이 있습니다. 이중 diff = a -b; return (diff bool CompareDoubles2(double A, double B) { double diff = A - B; return (diff 그러나이 접근법은 비효율적 일 수 있습니다.

컨텍스트 의존적 고려 사항

비교 방법의 선택은 컨텍스트와 예상 값에 따라 다릅니다. 다음과 같은 잠재적 인 함정을 고려하십시오 :
  • A == B 및 B == C를 가정하면 A == C. function.
  • 표준 epsilon

std :: numeric_limits :: epsilon ()은 1.0과 다음으로 가치가있는 차이를 나타냅니다. It can be used in comparison functions, but only if expected values ​​are less than 1.

Consequences of Integer Arithmetic

Using doubles to hold integer values ​​can lead to correct arithmetic, as long as fractions or values ​​outside the range of an integer are avoided. 예를 들어, 4.0/2.0은 1.0 1.0과 같습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3