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 중국어 웹사이트의 기타 관련 기사를 참조하세요!