> 백엔드 개발 > C++ > 부동 소수점 비교를 위해 항등 연산자를 사용하는 것이 안전한 경우는 언제입니까?

부동 소수점 비교를 위해 항등 연산자를 사용하는 것이 안전한 경우는 언제입니까?

Patricia Arquette
풀어 주다: 2024-11-19 04:15:02
원래의
195명이 탐색했습니다.

When is it Safe to Use the Equality Operator for Floating-Point Comparisons?

부동 소수점 비교는 언제 허용됩니까?

프로그래밍에서 부동 소수점 숫자를 등호 연산자(= =)와 비교하는 것은 일반적으로 표현의 본질적인 부정확성으로 인해 권장되지 않습니다. 그러나 이러한 비교가 신뢰할 수 있는 것으로 간주될 수 있는 제한된 시나리오가 있습니다.

정수값의 정확한 표현

부동 소수점 산술에 널리 채택된 표준인 IEEE 754는 특정 범위 내의 정수에 대한 부동 소수점 표현은 정확합니다. 따라서 0을 포함한 정수는 항등 연산자를 사용하여 비교할 수 있습니다.

예:

float a = 1.0;
float b = 1.0;
a == b; // True
로그인 후 복사

정수 상수

예제 코드의 BAR 상수와 같이 static const double로 정의된 상수를 사용하면 값이 표시됩니다. 정확한 부동 소수점 숫자로. 따라서 항등 연산자를 사용하여 변수를 이러한 상수와 비교하면 항상 올바른 결과가 생성됩니다.

예:

static const double BAR = 3.14;
void foo(double d)
{
    if (d == BAR)
        ...
}
로그인 후 복사

이 경우 foo(BAR )는 다른 계산이나 작업이 d를 수정하지 않는다는 가정 하에 항상 true로 평가됩니다. 변수입니다.

주의 사항

정수의 부동 소수점 비교는 일반적으로 신뢰할 수 있지만 여전히 주의가 필요합니다.

  • 비교하는 숫자는 표현 가능한 범위 내의 정수입니다.
  • 동일 비교를 사용하지 마세요. 계산이나 변환의 부동 소수점 결과.
  • 필요한 경우 정수 또는 특수 라이브러리 사용을 고려하세요.

위 내용은 부동 소수점 비교를 위해 항등 연산자를 사용하는 것이 안전한 경우는 언제입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿