> 백엔드 개발 > C++ > 부동 소수점 계산 결과 정수 개수가 잘못된 이유는 무엇입니까?

부동 소수점 계산 결과 정수 개수가 잘못된 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-19 13:38:02
원래의
627명이 탐색했습니다.

Why Does My Floating-Point Calculation Result in an Incorrect Integer Count?

부동 소수점 정밀도의 함정과 해결 방법

부동 소수점 숫자는 분수와 실수 값을 나타내는 효율성으로 인해 프로그래밍에서 널리 사용됩니다. . 그러나 아래 쿼리의 예시와 같이 본질적으로 예상치 못한 결과를 초래할 수 있는 정확성 문제가 발생합니다.

질문:

프로그래머가 숫자를 계산할 때 불일치를 발견했습니다. 부동 소수점 입력을 기반으로 하는 열의 수입니다. 결과가 2.0에 매우 가깝음에도 불구하고 정수로 변환하면 1로 반내림되어 잘못된 개수가 발생합니다.

답변:

플로팅 이해- 점 산술:

부동 소수점 숫자의 정밀도는 컴퓨터 내부에서 표현되는 방식에 따라 제한됩니다. 바이너리 형식. 이로 인해 특히 특정 값을 처리할 때 약간의 부정확성이 발생할 수 있습니다.

  • 정확한 표현: 모든 값을 부동 소수점 숫자로 정확하게 표현할 수 있는 것은 아닙니다. 제공된 예제("4.600")는 정확히 저장할 수 없으므로 "4.5999999999999996"이라는 값이 약간 벗어납니다.
  • 범위 비교: 이와 같은 상황에서는 비교하는 것이 더 의미 있는 경우가 많습니다. 엄격한 동등성을 적용하기보다는 허용 가능한 오류 범위를 갖는 값을 사용합니다. 예를 들어, "1.9999999999999996"의 계산 결과는 부동 소수점 제한을 고려하여 합리적인 여백 2.0 내에 속합니다.
  • 추가 읽기: "모든 컴퓨터 과학자가 해야 할 일"과 같은 리소스 탐색 부동 소수점 산술에 대해 알아보기" 및 "부동 소수점 숫자 비교"를 통해 이에 대한 더 깊은 이해를 얻을 수 있습니다. 주제.

위 내용은 부동 소수점 계산 결과 정수 개수가 잘못된 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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