>  기사  >  백엔드 개발  >  부동 소수점 변수와 이중 변수를 동등하게 비교하면 때때로 예상치 못한 결과가 발생하는 이유는 무엇입니까?

부동 소수점 변수와 이중 변수를 동등하게 비교하면 때때로 예상치 못한 결과가 발생하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-01 15:39:02270검색

Why Does Comparing Float and Double Variables for Equality Sometimes Lead to Unexpected Results?

Double 변수와 Float 변수의 동일성이 기만적일 수 있는 이유

float 및 double과 같은 부동 소수점 데이터 유형은 실수를 표현하는 데 필수적입니다. 프로그램 작성. 그러나 놀라운 결과를 피하기 위해서는 그 미묘한 차이를 이해하는 것이 중요합니다.

정밀도 및 반올림: 장난스러운 효과

부동 및 이중 변수는 정밀도가 제한되어 있습니다. 정보 손실 없이 유한한 자릿수. 이러한 고유한 제한으로 인해 숫자의 내부 표현이 사용 가능한 공간에 맞게 잘리는 반올림 오류가 발생합니다.

예시

표시된 숫자 1.1을 고려하세요. float와 double로. 제한된 정밀도로 인해 내부적으로 근사값으로 표시됩니다.

float f = 1.1; // Internally stored as an approximation
double d = 1.1; // Internally stored as an approximation

f와 d가 같은지 비교하면 false가 반환됩니다. 왜냐하면 "동일한" 숫자를 나타내더라도 반올림 오류로 인해 내부 표현이 다르기 때문입니다.

문제 방지

오도된 비교를 방지하려면 부동 소수점 숫자에 등호 연산자(==)를 사용하지 않는 것이 가장 좋습니다. 대신 허용 범위(엡실론)를 도입하고 숫자 간의 차이를 비교하여 허용 가능한 범위 내에 있는지 확인하세요.

if (abs(f - d) < epsilon) {
  // They are considered equal within the tolerance
}

부동 및 이중 비교의 함정을 이해하면 예상치 못한 결과를 방지하고 코드의 정확성을 보장하세요.

위 내용은 부동 소수점 변수와 이중 변수를 동등하게 비교하면 때때로 예상치 못한 결과가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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